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)。
它还允许指定多个目标,还允许使用端口和可用性组,但我需要它的只是选择一个实例并将其拉出。
希望对某些人有用。
我正在尝试使用 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)。
它还允许指定多个目标,还允许使用端口和可用性组,但我需要它的只是选择一个实例并将其拉出。
希望对某些人有用。