AWS SSM文档StringList错误排查:Terraform创建EC2 AMI标签失败
解决AWS SSM自动化文档标签步骤的ResourceIds解析错误
问题分析
你的SSM自动化文档中,AMI创建成功但tagImage步骤失败,报错提示无法将ResourceIds解析为StringList,问题出在tagImage步骤的输入参数格式上。
错误原因
aws:createTags动作要求ResourceIds是一维字符串列表,但你当前的写法是在列表项里嵌套了另一个数组:
ResourceIds: - ['{{ createImage.CustomImageId }}']
这种嵌套数组的格式不符合参数类型要求,导致SSM无法正确解析。
修正后的代码
将tagImage步骤的ResourceIds部分修改为一维列表形式:
resource "aws_ssm_document" "create_snapshots" { name = "create-snapshots" document_format = "YAML" document_type = "Automation" content = <<DOC description: creates snapshots before patching schemaVersion: '0.3' parameters: InstanceId: type: AWS::EC2::Instance::Id description: (Required) EC2 Instance(s) to restart WindowExecutionId: type: String description: (Required) window execution id WindowId: type: String description: (Required) window id Environment: type: String description: (Required) cluster environment tag mainSteps: - name: createImage action: aws:createImage maxAttempts: 3 inputs: InstanceId: '{{ InstanceId }}' ImageName: '{{ InstanceId }}_{{global:DATE_TIME}}' onFailure: step:SendFailureNotif outputs: - Name: CustomImageId Selector: "CustomImageId" Type: String nextStep: tagImage - name: tagImage action: aws:createTags maxAttempts: 3 inputs: ResourceIds: - '{{ createImage.CustomImageId }}' # 移除嵌套方括号 Tags: - Key: 'Date' Value: '{{ global:DATE_TIME }}' - Key: 'InstanceName' Value: '{{ InstanceId }}' - Key: 'BackupType' Value: 'snapshot' - Key: 'BackupDate' Value: '{{ global:DATE_TIME }}' - Key: 'Environment' Value: '{{ Environment }}' isEnd: true DOC }
关键修改说明
把原来的- ['{{ createImage.CustomImageId }}']改为- '{{ createImage.CustomImageId }}',这样ResourceIds就变成了包含单个字符串的一维列表,符合aws:createTags动作对参数类型的要求,SSM就能正确解析并完成标签添加操作。
内容的提问来源于stack exchange,提问作者asp
相关产品推荐
相关产品推荐

