【问题标题】:Grant S3 access to Elastic Beanstalk instances授予 S3 对 Elastic Beanstalk 实例的访问权限
【发布时间】:2014-03-06 08:46:45
【问题描述】:

我正在尝试使用来自私有 S3 存储桶的一些 ssh 密钥在 Elastic Beanstalk 中预置我的 EC2 实例。这是我的 .ebextensions/.config 的 sn-p:

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 存储桶策略...

【问题讨论】:

标签: amazon-s3 amazon-elastic-beanstalk


【解决方案1】:

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

aws-elasticbeanstalk-ec2-role

@chaseadamsio 和 @tom 提到了,谢谢。

【讨论】:

    【解决方案2】:

    首先点击下面的标签

    然后点击添加的角色

    并添加 AmazonS3FullAccess 访问策略

    【讨论】:

    • 这是一个不错的选择。
    【解决方案3】:

    根据亚马逊文档,您需要使用资源密钥来添加身份验证,以便从 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

    【讨论】:

      【解决方案4】:

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

      IAM Roles for Amazon EC2

      【讨论】:

      • 只是为了增加一些额外的清晰度:aws-elasticbeanstalk-ec2-role 应该已经有一个 IAM 角色,您可以在您的 IAM 角色 Web 控制台中为您的 s3 存储桶访问附加一个新策略。话虽如此,我发现为不同的环境创建新角色更为谨慎。
      • 我也被这个问题的其他几个贡献所误导,即试图搞乱“桶策略”。事实证明,您必须将 AmazonS3FullAccess 策略添加到 aws-elasticbeanstalk-ec2-role
      • @tom 正是我所需要的
      • @tom 感谢汤姆,您应该将其转换为答案。真的很有帮助
      猜你喜欢
      • 2018-09-18
      • 2016-09-05
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2017-03-23
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多