Преобразовать строку в шаблон облачной информации CommaDelimitedList - PullRequest
0 голосов
/ 20 мая 2019

У меня есть следующий шаблон облачной информации:

AWSTemplateFormatVersion: '2010-09-09'

Parameters:
  serviceRoleArn:
    Type: String
    Description: The role that's used when the task is executed.
  AWSInstanceID:
    Type: String
  awsSSMMaintenanceWindowTargetId:
    Type: String
  awsSSMMaintenanceWindowId:
    Type: String
  automationSSMTaskRole:
    Type: String
  automationSSMTaskType:
    Type: String
  automationSSMTaskDescription:
    Type: String
  automationSSMTaskARN:
    Type: String

Resources:
  startInstanceTask:
    Type: 'AWS::SSM::MaintenanceWindowTask'
    Properties:
      MaxErrors: "2"
      Description: !Ref "automationSSMTaskDescription"
      ServiceRoleArn:
        Ref: serviceRoleArn
      Priority: 1
      MaxConcurrency: "1"
      Targets:
      - Values:
        - !Ref "awsSSMMaintenanceWindowTargetId"
        Key: WindowTargetIds
      Name: !Ref "automationSSMTaskType"
      TaskArn: !Ref "automationSSMTaskARN"
      WindowId: !Ref "awsSSMMaintenanceWindowId"
      TaskType: "AUTOMATION"
      TaskInvocationParameters:
        MaintenanceWindowAutomationParameters:
          DocumentVersion: "$DEFAULT"
          Parameters:
            InstanceId:
              - !Ref AWSInstanceID
            AutomationAssumeRole:
              - Ref: automationSSMTaskRole

Однако AWSInstanceID преобразуется в:

"InstanceId": ["i-0375357htn1a8ad40,i-0d0f0f724tytf4d37,i-0e61cc61hthf8c2b2"]

Но это не тот формат, который мне нужен.Как получить следующий вывод?

"InstanceId": [
    "i-0375357htn1a8ad40",
    "i-0d0f0f724tytf4d37",
    "i-0e61cc61hthf8c2b2"
]

Я хотел бы преобразовать String в CommaDelimitedList.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

CloudFormation имеет встроенную функцию под названием Fn :: Split . Скопировано из руководства пользователя:

В следующем примере строка разбивается на каждую вертикальную черту (|). Функция возвращает ["a", "b", "c"].

!Split [ "|" , "a|b|c" ]

Так что в вашем случае, я думаю, это переводится как

!Split [ ",", !Ref AWSInstanceID ]

В качестве альтернативы вы также можете попытаться указать AWSInstanceID как тип CommaDelimitedList , например,

Parameters:
  AWSInstanceID:
    Type: CommaDelimitedList
0 голосов
/ 20 мая 2019

От Параметры - AWS CloudFormation :

List<AWS::EC2::Instance::Id>

Массив идентификаторов экземпляров Amazon EC2, таких как i-1e731a32, i-1e731a34.

Итак, попробуйте изменить свой параметр с:

Type: String

на:

Type: List<AWS::EC2::Instance::Id>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...