弹性beantalk实例的自定义IAM实例配置文件在S3_MALFORMED_POLICY上失败

时间:2019-04-26 17:52:02

标签: amazon-web-services amazon-iam amazon-elastic-beanstalk

我创建了一个新的iam角色,希望我的实例可以以此身份运行,以便可以为它赋予实例所需的其他资源(例如,参数存储,数据库实例等)的特定权限。

默认角色aws-elasticbeanstalk-ec2-role附加了4条策略:AWSElasticBeanstalkWebTier,AmazonSESFullAccess,AWSElasticBeanstalkMulticontainerDocker,AWSElasticBeanstalkWorkerTier。

因此,我创建了一个像my-app-role这样的角色,该角色具有相同的4个策略以及该应用程序专用的一个策略。

但是,当我更改eb配置(通过控制台)以对其实例使用此新角色时,它旋转了一段时间,并最终以很少的信息显示此错误: enter image description here 我注意到有一个名为Elasticbeanstalk-us-east-1-(arn)的弹性beantalk的存储桶,其中提到了默认的Elastic beantalk角色,因此我在my-app-role中添加了另一个策略,以授予对该存储桶的访问权限,例如:< / p>

{
    "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实例角色必须做什么吗?

1 个答案:

答案 0 :(得分:1)

我刚遇到上述问题,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存储桶中删除对不再存在的用户的引用即可解决此问题。