我正在尝试使用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:
- Id: "i-xxx"
- Id: "i-yyy"
...但是我不确定如何通过StringList创建上面的内容。
我尝试过:
Targets:
- Id: "{{ DeregisterInstanceId }}"
和
Targets:
Id: "{{ DeregisterInstanceId }}"
但是不行。
答案 0 :(得分:1)
尽管我在json中创建了文档,但我曾经遇到过完全相同的问题。 请签出以下工作脚本以从负载均衡器目标组中注销实例
自动化文档第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)。
它还允许指定多个目标,还允许使用端口和可用性组,但我所需要的只是选择一个实例并将其拉出。
希望它可能对某人有用。