如何通过Terraform配置AssumeRole实现SSM Document与EC2关联并解决报错
问题根因
你当前的报错是SSM关联自动化文档时,未显式指定自动化流程使用的执行角色,且负责执行Terraform的IAM角色缺少传递SSM执行角色的权限,导致SSM服务无法获取合法角色运行自动化任务。
修正步骤
1. 补充SSM关联资源的必填配置
aws_ssm_association资源针对Automation类型的SSM文档,必须显式指定automation_assume_role(自动化执行角色ARN)和automation_target_parameter_name(文档中对应实例ID的参数名),你当前的配置完全缺失这两个参数。
修改ssm.tf中的关联资源配置如下:
resource "aws_ssm_association" "rhel" { name = aws_ssm_document.rhel_domain_join_document.name targets { key = "InstanceIds" values = [aws_instance.rhel.id] } # 新增配置:指定SSM自动化使用的执行角色 automation_assume_role = aws_iam_role.rhel_instance_role.arn # 新增配置:匹配你的SSM文档中定义的实例ID参数名,若文档中参数名不同请对应修改 automation_target_parameter_name = "InstanceId" }
2. 给Terraform执行角色补充PassRole权限
你main.tf中指定的Terraform执行角色arn:aws:iam::1234:role/my-role,需要额外添加IAM权限,允许它将SSM执行角色传递给SSM服务,否则创建关联时会因权限不足触发相同报错。
给my-role附加如下权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::1234:role/rhel_instance_role*" } ] }
3. 可选优化项(非报错必要修正)
你当前为实例角色附加的AmazonEC2RoleforSSM是AWS已废弃的旧托管策略,建议替换为官方最新推荐的AmazonSSMManagedInstanceCore,避免后续权限兼容问题。
验证方法
修改配置后重新执行terraform plan确认变更无问题,再执行terraform apply即可完成SSM关联创建。
内容的提问来源于stack exchange,提问作者mellifluous
相关产品推荐
相关产品推荐

