Amazon ec2 AWS EC2系统管理器参数类型

Amazon ec2 AWS EC2系统管理器参数类型,amazon-ec2,amazon-systems-manager,Amazon Ec2,Amazon Systems Manager,我正在尝试使用AmazonEC2SystemsManager()创建一个“自动化”文档类型,以便(除其他外)标记刚刚创建的AMI 您可以在“mainSteps”中以预先确定的方式创建标记: 但要使用数量可变的标记进行标记,我假设需要进行以下更改: ... { "name": "CreateTags", "action": "aws:createTags", "maxAttempts": 3, "onFailure": "Abort", "inputs": { "Res

我正在尝试使用AmazonEC2SystemsManager()创建一个“自动化”文档类型,以便(除其他外)标记刚刚创建的AMI

您可以在“mainSteps”中以预先确定的方式创建标记:

但要使用数量可变的标记进行标记,我假设需要进行以下更改:

...
{
  "name": "CreateTags",
  "action": "aws:createTags",
  "maxAttempts": 3,
  "onFailure": "Abort",
  "inputs": {
    "ResourceType": "EC2",
    "ResourceIds": ["{{ CreateImage.ImageId }}"],
    "Tags": {{ Tags }}
  }
},
...
添加了一个名为“Tags”的新参数,类型为“MapList”:

"parameters": {
  "Tags": {
    "type": "MapList"
  }
}
因为运行该进程是在抱怨我使用了“String”类型,并说我应该使用“MapList”

“MapList”被列为AmazonEC2SystemsManager()的一种参数类型,但我还并没有找到任何关于如何定义这种类型的文档

根据我从上面的“硬编码”示例中看到的内容和其他API中的其他标记方法,我猜测了几种格式,但都没有用:

[ { "Key": "Name", "Value": "newAmi" } ]
[ { "Key": "Name", "Values": [ "newAmi" ] } ]
1: { "Key": "Name", "Values": [ "newAmi" ] }
有人知道如何定义AmazonEC2SystemsManager引入的新参数类型(特别是“映射列表”)吗

更新:

由于缺少文档,Amazon支持人员正在询问自动化团队如何使用此方法最好地标记ami。我发现了如何在控制台中添加单个标记作为参数值,不过:

{ "Key": "TagName", "Value": "TagValue" }
我尝试添加多个标记将允许自动启动:

{ "Key": "TagName1", "Value": "TagValue1" }, { "Key": "TagName2", "Value": "TagValue2" }
但最终会在运行时返回此一般错误:

Internal Server Error. Please refer to Automation Service Troubleshooting 
Guide for more diagnosis details
阵列中似乎缺少[],但您似乎可以免费获得这些,因为当我添加它们时,会出现以下错误:

Parameter type error. [[ { "Key": "Description", "Value": "Desc" }, 
{ "Key": "Name", "Value": "Nm" } ]] is defined as MapList.

感谢您使用EC2 Systems Manager的自动化功能。这是我测试过的文档,它是有效的

{
  "schemaVersion": "0.3",
  "description": "Test tags.",
  "assumeRole": "arn:aws:iam::123456789012:role/TestRole",
  "parameters": {
    "Tags": {
      "default": [{
        "Key": "TagName1",
        "Value": "TagValue1"
      },
      {
        "Key": "TagName2",
        "Value": "TagValue2"
      }],
      "type": "MapList"
    }
  },
  "mainSteps": [
    {
      "name": "CreateTags",
      "action": "aws:createTags",
      "maxAttempts": 3,
      "onFailure": "Abort",
      "inputs": {
        "ResourceType": "EC2",
        "ResourceIds": [
          "i-12345678"
        ],
        "Tags": "{{ Tags }}"
      }
    }
  ]
}

感谢您使用EC2 Systems Manager的自动化功能。这是我测试过的文档,它是有效的

{
  "schemaVersion": "0.3",
  "description": "Test tags.",
  "assumeRole": "arn:aws:iam::123456789012:role/TestRole",
  "parameters": {
    "Tags": {
      "default": [{
        "Key": "TagName1",
        "Value": "TagValue1"
      },
      {
        "Key": "TagName2",
        "Value": "TagValue2"
      }],
      "type": "MapList"
    }
  },
  "mainSteps": [
    {
      "name": "CreateTags",
      "action": "aws:createTags",
      "maxAttempts": 3,
      "onFailure": "Abort",
      "inputs": {
        "ResourceType": "EC2",
        "ResourceIds": [
          "i-12345678"
        ],
        "Tags": "{{ Tags }}"
      }
    }
  ]
}

谢谢@Cooper.Wu。如果我更改assumeRole/ResourceId并从CLI运行,该示例将按原样工作,但这在控制台中不起作用,并且会抱怨标记的默认值:
参数类型错误。[[{“Key”:“TagName1”,“Value”:“TagValue1”},{“Key”:“TagName2”,“Value”:“TagValue2”}]]定义为映射列表。
更重要的是,如果我在CLI中输入自己的标记值,而不输入周围的“[]”s(有问题的错误),它在运行时仍然会失败:
内部服务器错误。有关更多诊断详细信息,请参阅《自动化服务故障排除指南》
。有什么建议吗?谢谢@Cooper.Wu。如果我更改assumeRole/ResourceId并从CLI运行,该示例将按原样工作,但这在控制台中不起作用,并且会抱怨标记的默认值:
参数类型错误。[[{“Key”:“TagName1”,“Value”:“TagValue1”},{“Key”:“TagName2”,“Value”:“TagValue2”}]]定义为映射列表。
更重要的是,如果我在CLI中输入自己的标记值,而不输入周围的“[]”s(有问题的错误),它在运行时仍然会失败:
内部服务器错误。有关更多诊断详细信息,请参阅《自动化服务故障排除指南》
。有什么建议吗?