YAML списки и переменные

Я пытаюсь отменить регистрацию экземпляров EC2 в целевых группах, используя документ автоматизации в SSM, который я пытаюсь записать в 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 }}"

Но не идти.

0 ответов

Раньше у меня была такая же проблема, хотя я создавал документ в 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 }}"
          }
        ]
      }
    }
  ]
}

Очевидно, что нас интересует параметр target, для работы ему нужен массив json (забудьте о формате cli, кажется, ему нужен json).

Он также позволяет указать несколько целей, а также позволяет использовать порты и группы доступности, но все, что мне нужно, - это выбрать один экземпляр и вытащить его.

Надеюсь, это может быть кому-то полезно.

Другие вопросы по тегам