YAML列表和变量

时间:2018-12-27 16:14:41

标签: yaml aws-ssm

我正在尝试使用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 }}"

但是不行。

1 个答案:

答案 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)。

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

希望它可能对某人有用。