Jos*_*ver 2 amazon-web-services amazon-elastic-beanstalk
我一直在测试我的持续部署设置,试图获得一组最小的IAM权限,这将允许我的CI IAM组部署到我的"staging"Elastic Beanstalk环境.
在我的最新测试中,我的部署陷入困境.控制台中的最后一个事件是:
Updating environment staging's configuration settings.
Run Code Online (Sandbox Code Playgroud)
幸运的是,部署将在30分钟后超时,因此可以再次部署环境.
这似乎是一个权限问题,因为如果我授予s3:*所有资源,则部署可以正常工作.似乎在调用UpdateEnvironment时,Elastic Beanstalk对S3做了一些事情,但我无法弄清楚是什么.
我尝试了以下策略来授予EB对其资源桶的完全访问权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::elasticbeanstalk-REGION-ACCOUNT/resources/_runtime/_embedded_extensions/APP",
"arn:aws:s3:::elasticbeanstalk-REGION-ACCOUNT/resources/_runtime/_embedded_extensions/APP/*",
"arn:aws:s3:::elasticbeanstalk-REGION-ACCOUNT/resources/environments/ENV_ID",
"arn:aws:s3:::elasticbeanstalk-REGION-ACCOUNT/resources/environments/ENV_ID/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
其中REGION,ACCOUNT,APP,和ENV_ID是我的AWS区域,账号,应用程序名称和环境ID,分别.
有没有人知道S3动作和资源EB试图访问哪些?
小智 7
已经在您的博客上分享了这一点,但这可能会有更广泛的受众群体,所以在这里:
接下来,ElastiBeanstalk团队为我提供了有关S3权限的以下答案:
"[...]看到下面的要求,稍微锁定的版本会起作用吗?我已经在这个案例中附加了一个策略,该策略将使用elasticbeanstalk从桶中授予s3:GetObject.这主要是为了允许访问所有elasticbeanstalk存储桶,包括我们拥有的那些.你唯一需要做的就是使用GetObject,所以这应该足以完成你需要的一切."
因此,似乎ElasticBeanstalk正在从任何人的领域访问存储桶以便正常工作(这有点糟糕,但这就是它的方式).
由此,以下策略将足以使S3与以下内容一起使用:
{
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::elasticbeanstalk-<region>-<account_id>",
"arn:aws:s3:::elasticbeanstalk-<region>-<account_id>/",
"arn:aws:s3:::elasticbeanstalk-<region>-<account_id>/*"
],
"Effect": "Allow"
},
{
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::elasticbeanstalk*",
"Effect": "Allow"
}
Run Code Online (Sandbox Code Playgroud)
显然,您需要将其包含在IAM理解的适当策略声明中.您之前关于IAM策略的所有假设都已经证明是正确的,所以我猜这应该不是问题.
| 归档时间: |
|
| 查看次数: |
3679 次 |
| 最近记录: |