我正在尝试使用来自私有S3存储桶的一些ssh密钥在Elastic Beanstalk中配置我的EC2实例。这是我的.ebextensions / .config:
的片段files:
"/root/.ssh/id_rsa" :
mode: "000400"
ownder: root
group: root
source: https://s3-us-west-2.amazonaws.com/<bucket>/<app>_id_rsa
不幸的是,我从S3获得了403响应。有没有办法使用安全组授予对EC2实例的访问权限?我无法单独授予每个实例访问权限,因为在缩放之前我不会知道它们的IP。是否有其他方法可以授予此Elastic Beanstalk应用程序访问权限?我无法想出一个好的S3 Bucket Policy ......
答案 0 :(得分:10)
您可以为S3访问设置IAM角色,并将IAM角色分配给EC2。
答案 1 :(得分:0)
根据亚马逊文档,您需要使用资源密钥来添加身份验证,以便从s3存储桶下载私有文件。以下是他们网站上的一个例子:
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
**S3Auth:**
type: "s3"
buckets: ["**elasticbeanstalk-us-west-2-123456789012**"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "***aws-elasticbeanstalk-ec2-role***"
files:
"**/tmp/data.json**" :
mode: "000755"
owner: root
group: root
authentication: "**S3Auth**"
source: **https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2-123456789012/data.json**
所有粗体文字都需要替换为您自己环境特有的自定义内容,但 aws-elasticbeanstalk-ec2-role 除外,它是环境的IAM角色默认情况下创建,您可以将其替换为另一个IAM角色。确定资源后,您可以重复使用尽可能多的文件。您可以在此处获取更多信息http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#linux-files
答案 2 :(得分:0)
答案 3 :(得分:0)
就我而言,我尝试创建一个新的EC2角色,该角色将包括对S3的访问策略,但无法使其正常工作,因为默认情况下,此角色似乎未附加到ec2实例?扮演VPC S3存储桶角色,但这只会弄乱存储桶并将我拒之门外。正确的解决方案是将S3访问策略添加到已经存在的ElasticBeanstalk角色中:
aws-elasticbeanstalk-ec2-role
@chaseadamsio和@tom提到的,谢谢你。