Terraform部署EC2实例时IAM实例配置文件参数报错求助
问题:Terraform部署EC2实例时IAM实例配置文件报错
错误信息
Value (arn:aws:iam::000000000:instance-profile/poc-profile) for parameter iamInstanceProfile.name is invalid. Invalid IAM Instance Profile name
问题场景
使用内部EC2基础模块部署实例,传递IAM实例配置文件ARN作为参数:
module "ec2_poc" { iam_instance_profile = aws_iam_instance_profile.base_profile.arn }
Terraform执行计划中该参数值显示为:+ iam_instance_profile = "arn:aws:iam::000000000:instance-profile/poc-profile"
该ARN与AWS控制台查询到的实例配置文件ARN完全一致。
原因分析
AWS EC2 API的iamInstanceProfile.name参数仅接受IAM实例配置文件的纯名称,不支持ARN格式。尽管Terraform官方文档说明aws_instance的iam_instance_profile字段理论上支持名称或ARN,但实际调用底层API时,若直接传入ARN,会被当作名称参数传递,而ARN包含的arn:aws:iam::等前缀不符合实例配置文件名称的规范,因此触发报错。
解决方案
修改模块调用代码,传递IAM实例配置文件的名称而非ARN:
module "ec2_poc" { iam_instance_profile = aws_iam_instance_profile.base_profile.name }
验证
修改后,Terraform执行计划中该参数值会变为实例配置文件的纯名称(如poc-profile),完全符合AWS API的参数要求,即可正常完成EC2实例部署。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

