使用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下的子文件夹,如果重要的话。
什么是适当的权限?
答案 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
并逐个添加了权限。