无法将实例ID传入自动化关联,如何用Terraform执行SSM自动化文档?
解决Terraform执行AWS-CreateDSManagementInstance自动化文档的问题
你的错误根源是用错了Terraform资源:aws_ssm_association是用来将SSM文档长期关联到目标资源(比如实例、标签组),让文档定期/按条件重复执行的;而AWS-CreateDSManagementInstance是一次性的自动化工作流(用于创建管理实例),不需要关联到现有实例,应该用aws_ssm_automation_execution资源来触发执行。
正确的Terraform配置
保留原有的data "aws_ssm_document"部分,替换aws_ssm_association为以下配置:
resource "aws_ssm_automation_execution" "domain_service_management_instance" { document_name = data.aws_ssm_document.directory_management.name parameters = { DirectoryId = aws_directory_service_directory.aws-managed-ad[0].id KeyPairName = var.key_name IamInstanceProfileName = aws_iam_instance_profile.controller.name SecurityGroupName = aws_security_group.amazon_ssm_directory_service_security_group.id AmiId = var.directory_management_ami_id InstanceType = var.windows_instance_type AutomationAssumeRole = "arn:aws:iam::1234567890:role/aws-service-role/ssm.amazonaws.com/AWSServiceRoleForAmazonSSM" } # 可选:如果需要等待自动化执行完成再继续后续资源创建 depends_on = [aws_directory_service_directory.aws-managed-ad] }
关键说明
- 移除了
targets和automation_target_parameter_name:因为这个自动化文档是主动创建实例,不需要预先指定目标实例; aws_ssm_automation_execution会触发一次性的自动化工作流执行,完全匹配AWS-CreateDSManagementInstance的使用场景;- 确保
AutomationAssumeRole拥有足够权限:需要允许SSM服务创建EC2实例、访问Directory Service等相关权限(你指定的AWS托管角色通常已经包含这些权限,但可以根据实际情况验证)。
内容的提问来源于stack exchange,提问作者Metro
相关产品推荐
相关产品推荐

