Получение ошибки «Одна или несколько функций Fn :: Sub intrinsi c не указывают ожидаемые аргументы» при попытке использовать переменные в UserData в CloudFormation - PullRequest
1 голос
/ 10 июля 2020

Я получаю эту ошибку при попытке использовать! Sub с переменными в UserData в CloudFormation:

Ошибка шаблона: одна или несколько функций Fn :: Sub intrinsi c не указывают ожидаемые аргументы. Укажите строку в качестве первого аргумента и необязательный второй аргумент, чтобы указать отображение значений для замены в строке

Почему я получаю эту ошибку?

Это мой код:

LinuxEC2Instance:
Type: AWS::EC2::Instance
Properties:
  UserData:
    Fn::Base64: !Sub
      - arn_id: !If [TestEnvironment, 'id1', 'id2']
      - key: !If [TestEnvironment, 'key1', 'key2']
      - |
        ARN_ID=${arn_id}
        KEY=${key}
        
        echo $ARN_ID 
        echo $KEY

1 Ответ

2 голосов
/ 10 июля 2020

Первый аргумент Sub должен быть строкой. Таким образом, вы должны изменить порядок в вашем UserData. Например:

    Fn::Base64: 
      !Sub
        - |
          #!/bin/bash -xe
       
          ARN_ID=${arn_id}
          KEY=${key}
        
          echo $ARN_ID 
          echo $KEY
        - arn_id: !If [TestEnvironment, 'id1', 'id2']
          key: !If [TestEnvironment, 'key1', 'key2']
...