从CodeShip部署到Elastic Beanstalk的适当S3权限是什么

时间:2015-04-06 13:11:42

标签: amazon-s3 elastic-beanstalk codeship

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

  

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

     

服务:亚马逊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/*"
            ]
        }
    ]
}

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

什么是适当的权限?

2 个答案:

答案 0 :(得分: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工作,但您可能已经从我的回答中猜到了。

答案 1 :(得分: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并逐个添加了权限。