从CodeShip部署到Elastic Beanstalk需要哪些适当的S3权限?

8
适当的S3权限是什么,可以使用CodeShip部署Elastic Beanstalk应用程序?在向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下的一个子文件夹。

什么是适当的权限?

2个回答

3

这些是我们在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命令,并逐个添加了权限。


2
在我们的内部测试中,我们仅需要以下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 工作,但你可能已经从我的回答中猜到了这一点。


我遇到了与这个问题的作者相同的问题,并在这里找到了解决方法:http://stackoverflow.com/a/24572049/121515。请注意,使用您上面描述的S3权限上传到S3将正常工作,但是新版本的部署不会。尽管AWS EB控制台显示错误,但Codeship也报告部署成功。 - Garret Heaton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接