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

Terraform创建EC2启动模板报无效ARN 缺失instance-profile路径

问题原因
  • AWS EC2服务无法直接绑定IAM角色,必须通过**IAM实例配置文件(Instance Profile)**作为中间载体完成角色关联。两类资源的ARN路径规则存在明确差异:IAM角色的ARN路径段为role/,实例配置文件的ARN路径段为instance-profile/,和报错提示要求的格式完全对应。
  • 现有配置仅创建了IAM角色资源,未创建对应的实例配置文件资源,且错误将IAM角色的ARN直接传入启动模板的iam_instance_profile配置块,最终传入API的ARN值为arn:aws:iam::1234444444444:role/assess-instance-role,不符合参数格式要求,触发校验报错。
  • 当前运行的Terraform v1.2.3、AWS Provider v3.75.2版本不存在相关逻辑兼容问题,无需调整环境版本。
修复方案
  • 新增aws_iam_instance_profile资源,将已创建的ECS实例角色关联到该实例配置文件。
  • 修改启动模板中iam_instance_profile块的参数引用,替换为实例配置文件的ARN(也可直接引用实例配置文件名,两种写法效果完全一致)。

修正后的配置片段:

resource "aws_launch_template" "launch-template" {
  image_id      = data.aws_ami.ecs.id
  instance_type = "c5.large"
  iam_instance_profile {
    # 替换为实例配置文件ARN,禁止直接引用IAM角色ARN
    arn = aws_iam_instance_profile.ecs_instance_profile.arn
    # 简化写法可直接传名称:name = aws_iam_instance_profile.ecs_instance_profile.name
  }
}

resource "aws_iam_role" "ecsInstanceRole" {
  name               = "assess-instance-role"
  assume_role_policy = data.aws_iam_policy_document.assume_role_policy.json
}

# 新增:和角色绑定的IAM实例配置文件
resource "aws_iam_instance_profile" "ecs_instance_profile" {
  name = "assess-instance-profile"
  role = aws_iam_role.ecsInstanceRole.name
}
注意事项
  • IAM实例配置文件与IAM角色为一一对应关系,给EC2实例、启动模板、Auto Scaling组配置实例IAM权限时,传入的参数目标必须是实例配置文件资源,不能直接使用IAM角色。
  • 配置修改完成后先执行terraform plan确认变更计划,确认会新增实例配置文件、修改启动模板配置后,再执行terraform apply即可正常完成资源创建。

内容的提问来源于stack exchange,提问作者Sean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:48:30