YAML 列表和变量

YAML lists and variables

我正在尝试使用 SSM 中的自动化文档从目标组中注销 EC2 实例,我试图用 YAML 编写它,但我在了解 YAML 列表和数组时遇到了重大问题。

以下是代码的相关部分:

parameters:
  DeregisterInstanceId:
    type: StringList
    description: (Required) Identifies EC2 instances for patching
    default: ["i-xxx","i-yyy"]

更进一步,我试图将此 DeregisterInstanceId 读取为列表,但它不起作用 - 收到关于预期的一种变量但收到另一种变量的各种错误。

name: RemoveLiveInstancesFromTG
action: aws:executeAwsApi
inputs:
  Service: elbv2
  Api: DeregisterTargets
  TargetGroupArn: "{{ TargetGroup }}"
  Targets: "{{ DeregisterInstanceId }}"
isEnd: true

Targets 输入真正需要的样子是这样的:

Targets:
    - Id: "i-xxx"
    - Id: "i-yyy"

...但我不确定如何传递我的 StringList 来创建上面的内容。

我试过了:

Targets:
   - Id: "{{ DeregisterInstanceId }}"

Targets:
   Id: "{{ DeregisterInstanceId }}"

但是不行

尽管我在 json 中创建了文档,但我曾经遇到过完全相同的问题。 请检查以下工作脚本以从负载均衡器目标组中注销实例

自动化文档 v. 74

{
  "description": "LoadBalancer deregister targets",
  "schemaVersion": "0.3",
  "assumeRole": "{{ AutomationAssumeRole }}",
  "parameters": {
    "TargetGroupArn": {
      "type": "String",
      "description": "(Required) TargetGroup of LoadBalancer"
    },
    "Target": {
      "type": "String",
      "description": "(Required) EC2 Instance(s) to deregister"
    },
    "AutomationAssumeRole": {
      "type": "String",
      "description": "(Optional) The ARN of the role that allows Automation to perform the actions on your behalf.",
      "default": ""
    }
  },
  "mainSteps": [
    {
      "name": "DeregisterTarget",
      "action": "aws:executeAwsApi",
      "inputs": {
        "Service": "elbv2",
        "Api": "DeregisterTargets",
        "TargetGroupArn": "{{ TargetGroupArn }}",
        "Targets": [
          {
            "Id": "{{ Target }}"
          }
        ]
      }
    }
  ]
}

显然兴趣点是 targets 参数,它需要一个 json 数组才能工作(忘记 cli 格式,它似乎需要 json)。

它还允许指定多个目标,还允许使用端口和可用性组,但我需要它的只是选择一个实例并将其拉出。

希望对某些人有用。