使用CloudFormation创建IAM角色时遇PolicyNotAttachable错误求助
问题解决:Cannot attach a Service Role Policy to a Customer Role
错误原因
你尝试附加的arn:aws:iam::aws:policy/aws-service-role/XXX系列托管策略,是AWS**服务关联角色(Service-Linked Role)**的专用策略。这类策略只能由AWS在自动创建对应服务关联角色时绑定,不允许手动附加到用户自定义的IAM角色上。
解决方案
将每个角色对应的专用策略替换为适合自定义服务角色的托管策略:
修正后的CloudFormation代码
AutoscalingRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: [application-autoscaling.amazonaws.com] Action: ['sts:AssumeRole'] ManagedPolicyArns: # 替换为Application Auto Scaling管理ECS服务的专用角色策略 - 'arn:aws:iam::aws:policy/service-role/AmazonApplicationAutoScalingForECSServiceRolePolicy' ECSRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: 2008-10-17 Statement: - Sid: '' Effect: Allow Principal: Service: ecs.amazonaws.com Action: 'sts:AssumeRole' ManagedPolicyArns: # 替换为ECS服务角色的标准托管策略 - 'arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRolePolicy' ECSTaskExecutionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: [ecs-tasks.amazonaws.com] Action: ['sts:AssumeRole'] ManagedPolicyArns: # 替换为ECS任务执行角色的标准托管策略 - 'arn:aws:iam::aws:policy/AmazonECSTaskExecutionRolePolicy'
补充说明
- 如果你的
AutoscalingRole不是用于ECS服务伸缩,而是其他资源(如EC2 Auto Scaling组),可以替换为对应的专用策略,比如arn:aws:iam::aws:policy/service-role/AmazonApplicationAutoScalingAutoScalingGroupRolePolicy - 服务关联角色与自定义服务角色的核心区别:服务关联角色是AWS为特定服务自动创建的,拥有固定的信任关系和权限;自定义服务角色由用户手动创建,可灵活配置信任关系和权限,但只能使用允许手动附加的策略。
内容的提问来源于stack exchange,提问作者Eveline Ribka Nelwan
相关产品推荐
相关产品推荐

