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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:46:23