【问题标题】:What are appropriate S3 permissions for deploying to Elastic Beanstalk from CodeShip从 CodeShip 部署到 Elastic Beanstalk 的适当 S3 权限是什么
【发布时间】:2015-06-10 21:28:20
【问题描述】:

使用 CodeShip 部署 Elastic Beanstalk 应用程序的适当 S3 权限是什么?将新版本部署到 tomcat 应用程序时,出现以下错误:

服务:Amazon S3,消息:您无权执行 's3:ListBucket' 动作。验证您的 S3 策略和 ACL 允许您执行这些操作。

服务:Amazon S3,消息:您愿意 无权执行“s3:GetObject”或“s3:ListBucket” 行动。验证您的 S3 策略和 ACL 是否允许您 执行这些操作。

如果我授予 CodeShip 用户对 S3 的完全访问权限,一切正常,但这并不理想。我的 CodeShip 用户当前的 S3 权限是

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:GetBucketPolicy"
            ],
            "Resource": [
                "arn:aws:s3:::codeshipbucket/*"
            ]
        }
    ]
}

如果重要的话,我给 CodeShip 的 S3 存储桶是 codeshipbucket 下的一个子文件夹。

什么是适当的权限?

【问题讨论】:

    标签: amazon-s3 amazon-elastic-beanstalk codeship


    【解决方案1】:

    在我们的内部测试中,我们只需以下 S3 权限就可以部署到 ElasticBeanstalk

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::YOUR_S3_BUCKET_NAME/*"
                ]
            }
        ]
    }
    

    这是我们目前在https://codeship.com/documentation/continuous-deployment/deployment-to-elastic-beanstalk/#s3 提供的文档中推荐的内容

    也就是说,我们的一位出色的用户发布了关于如何部署到 Elastic Beanstalk 的非常详尽的指南,该指南可在 http://nudaygames.squarespace.com/blog/2014/5/26/deploying-to-elastic-beanstalk-from-your-continuous-integration-system 获得,并推荐了更广泛的 S3 权限集。

    免责声明:我为 Codeship 工作,但您可能已经从我的回答中猜到了。

    【讨论】:

    • 我和这个问题的作者有同样的问题,在这里找到了解决方法:stackoverflow.com/a/24572049/121515。请注意,上传到 S3 可以使用您上面描述的 S3 权限正常工作,但新版本的部署不会。尽管 AWS EB 控制台中显示错误,但 Codeship 还报告部署成功。
    【解决方案2】:

    这些是我们必须授予使用 Codeship 的 IAM 用户的 S3 权限:

        {
            "Action": [
                "s3:CreateBucket",
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "s3:ListBucket",
                "s3:GetObjectAcl",
                "s3:GetBucketPolicy",
                "s3:DeleteObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-[region]-[account-id]",
                "arn:aws:s3:::elasticbeanstalk-[region]-[account-id]/*"
            ]
        }
    

    我们执行了eb deploy --debug,并一一添加了权限。

    【讨论】:

      猜你喜欢
      • 2013-08-13
      • 2014-10-30
      • 2014-11-27
      • 2016-05-22
      • 2019-03-07
      • 2018-10-01
      • 2019-07-16
      • 2019-05-07
      • 2016-07-09
      相关资源
      最近更新 更多