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

CloudFormation中如何将已有IAM角色ARN关联到实例配置文件以创建EC2实例?

CloudFormation中如何将已有IAM角色ARN关联到实例配置文件以创建EC2实例?

我来帮你排查并解决这个问题!咱们一步步来分析:

第一个报错的原因

你第一次用ARN填写Roles属性时出现的错误,本质是IAM实例配置文件(InstanceProfile)的Roles字段只接受角色名称,不能直接填ARN。系统把你输入的ARN当成了角色名来校验,而ARN里的冒号、斜杠等字符不符合角色名的规则(只能包含字母、数字和+=,.@_-这些符号),所以直接报错了。

第二次栈卡住的原因

换成角色名后栈卡在“资源创建初始化”,大概率是你引用的已有IAM角色没有配置正确的信任策略。因为实例配置文件的作用是让EC2实例能够扮演这个角色,如果角色本身不信任EC2服务,CloudFormation在关联角色到实例配置文件时就会卡住,无法完成验证。

正确的解决步骤

  1. 保持使用角色名称填写Roles字段
    你的第二个模板里角色名的写法是对的,继续保留这个配置:

    Resources:
      MyNewEC2Instance:
        Type: AWS::EC2::Instance
        Properties:
          ImageId: ami-0fcbc9ed97efe271e
          InstanceType: t2.micro
          SubnetId: subnet-fc2df495
          KeyName: sant-test
          IamInstanceProfile: !Ref Ec2InstanceProfile
      Ec2InstanceProfile:
        Type: AWS::IAM::InstanceProfile
        Properties:
          Path: "/"
          Roles:
            - "xxxxx" # 这里填已有角色的名称,不要用ARN
    
  2. 检查并更新已有角色的信任策略
    登录AWS控制台,找到管理员给你的那个xxxxx角色,查看它的信任策略,确保包含允许EC2服务扮演该角色的规则。正确的信任策略示例如下:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    如果原来的信任策略没有这条规则,添加之后再重新执行CloudFormation栈,应该就能正常创建了。

额外注意点

  • 确保你使用的AWS账户有权限将这个已有角色关联到新创建的实例配置文件上(管理员应该已经给你开了对应权限,但如果还是有问题可以找管理员确认)。
  • 角色和实例配置文件必须在同一个AWS账户下,跨账户的话需要额外配置角色信任关系,但你的场景里是同账户的已有角色,所以不用考虑这个。

备注:内容来源于stack exchange,提问作者Santhosh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:43:15