授予对Elastic Beanstalk实例的S3访问权限

时间:2014-02-08 23:37:05

标签: amazon-s3 elastic-beanstalk

我正在尝试使用来自私有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 ......

4 个答案:

答案 0 :(得分:10)

您可以为S3访问设置IAM角色,并将IAM角色分配给EC2。

IAM Roles for Amazon 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)

首先点击下面的标签

enter image description here

然后单击添加的角色

enter image description here

并添加AmazonS3FullAccess访问策略

enter image description here

答案 3 :(得分:0)

就我而言,我尝试创建一个新的EC2角色,该角色将包括对S3的访问策略,但无法使其正常工作,因为默认情况下,此角色似乎未附加到ec2实例?扮演VPC S3存储桶角色,但这只会弄乱存储桶并将我拒之门外。正确的解决方案是将S3访问策略添加到已经存在的ElasticBeanstalk角色中:

aws-elasticbeanstalk-ec2-role

@chaseadamsio和@tom提到的,谢谢你。