You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:06:36