我创建了一个新的iam角色,希望我的实例可以以此身份运行,以便我可以为它赋予实例所需的其他资源(例如,参数存储,数据库实例等)的特定权限。
默认角色aws-elasticbeanstalk-ec2-role
附加了4条策略:AWSElasticBeanstalkWebTier,AmazonSESFullAccess,AWSElasticBeanstalkMulticontainerDocker,AWSElasticBeanstalkWorkerTier。
因此,我创建了一个像my-app-role
这样的角色,它具有相同的4个策略以及该应用程序专用的一个策略。
但是,当我更改eb配置(通过控制台)以在实例中使用此新角色时,它旋转一段时间,最终显示的错误信息很少:我注意到有一个名为Elasticbeanstalk-us-east-1-(arn)的弹性beantalk的存储桶,其中提到了默认的Elastic beantalk角色,因此我在my-app-role
中添加了另一个策略来授予对该存储桶的访问权限,例如:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucketVersions",
"s3:ListBucket",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::elasticbeanstalk-us-east-1-(arn)/resources/environments/*",
"arn:aws:s3:::elasticbeanstalk-us-east-1-(arn)"
]
}
]
}
但是发生相同的错误。尽管如此,我仍然必须缺少一些许可。有人知道正确创建自定义eb实例角色必须做什么吗?
我刚刚遇到上述问题,AWS支持帮助了我。结果是,当您第一次将自定义IAM实例配置文件与Elastic Beanstalk一起使用时,它会对其S3存储桶(elasticbeanstalk-<region>-<account>
;例如elasticbeanstalk-us-east-1-123456789012
)进行调用,并将新的IAM角色添加到存储桶的策略中。在我的情况下,存储桶策略引用的是早已删除的测试IAM用户,但是对不再有效/现有用户的引用导致S3抱怨该策略现在无效/“格式错误”。 Elastic Beanstalk将尝试准确地进行13分钟的更改(对S3存储桶的策略进行更改),然后失败,并显示“ S3_MALFORMED_POLICY”错误。从Elastic Beanstalk S3存储桶中删除对不再存在的用户的引用已解决了该问题。