AWS Cloudformation - используйте AWS :: NoValue в Fn :: Sub - PullRequest
2 голосов
/ 08 апреля 2020

Я использую облачную информацию и хочу иметь возможность использовать псевдо значение AWS::NoValue в пределах Fn::Sub следующим образом:

!Sub ["ATL_DATASET_URL=${DatasetURL}", 
       DatasetURL: !If [IsURLProvided, 
                        !Ref BitbucketDatasetURL, 
                        !Ref "AWS::NoValue"]]

Мой шаблон проходит проверку, но не развертывается. Вот сообщение об ошибке, которое я получаю, когда нажимаю кнопку «Создать стек».

Template error: every value of the context object of every Fn::Sub object must be a string or a function that returns a string

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

Если вы хотите пропустить установку значения для DatasetURL, сделайте !If для возврата пустой строки '', когда условие оценивается как ложное, вместо AWS::NoValue.

Возвращение AWS::NoValue при значении false удаляет сопоставление для DatasetURL.

0 голосов
/ 08 апреля 2020

Альтернативой @franklinsijo является замена операторов If и Sub, если вы хотите фактически удалить свойство (например, YourPropertyName), если BitbucketDatasetURL не задано.

  YourPropertyName: !If
      - IsURLProvided 
      - !Sub ["ATL_DATASET_URL=${DatasetURL}", DatasetURL: !Ref BitbucketDatasetURL]
      - !Ref "AWS::NoValue"    

Или короче

  YourPropertyName: !If
      - IsURLProvided 
      - !Sub "ATL_DATASET_URL=${BitbucketDatasetURL}"
      - !Ref "AWS::NoValue"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...