2015-04-06 71 views
5

什么是使用CodeShip部署Elastic Beanstalk应用程序的合适S3权限?当部署一个新的版本到Tomcat应用程序我得到这些错误:适用于从CodeShip部署到Elastic Beanstalk的S3权限

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

我的S3存储我已经给CodeShip正在codeshipbucket一个子文件夹,如果它很重要。

什么是适当的权限?

回答

2

在我们的内部测试,我们已经能够部署只以下S3权限

{ 
    "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

那说ElasticBeanstalk,我们的一位非常棒的用户发布了关于如何部署到Elastic Beanstalk的非常详尽的指南,该指南在http://nudaygames.squarespace.com/blog/2014/5/26/deploying-to-elastic-beanstalk-from-your-continuous-integration-system处提供,并建议使用更广泛的S3权限集。

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

+0

我有这个问题的作者相同的问题,并发现修复在这里:http://stackoverflow.com/a/24572049/121515。请注意,上传到S3可以正常使用上面描述的S3权限,但新版本的部署不会。尽管AWS EB控制台中显示错误,但Codeship还报告部署已成功。 – 2015-07-16 03:09:35

2

这些都是S3的权限,我们不得不放弃我们与Codeship使用IAM用户:

{ 
     "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并添加权限一个接一个。

相关问题