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).
Он также позволяет указать несколько целей, а также позволяет использовать порты и группы доступности, но все, что мне нужно, - это выбрать один экземпляр и вытащить его.
Надеюсь, это может быть кому-то полезно.