В AWS CloudFormation логические значения и строки логических значений взаимозаменяемы?

Меня смущает то, как AWS CloudFormation обрабатывает логические значения и струны логических значений.

Например, являются ли 'true' и true (или 'false' и false) логически эквивалентными для CloudFormation? Я вижу примеры обоих случаев в их шаблонах Quick Start, которые заставляют меня думать, что это так (хотя я так или иначе не нашел документации по этому поводу).

Например, в своем шаблоне quickstart-compliance-common/templates/vpc-production.template они определяют переменную pSupportsNatGateway типа «String» (хотя по умолчанию используется значение буквальный, true):

Parameters:
  ...
  pSupportsNatGateway:
    Description: Specifies whether this region supports NAT Gateway (this value is
      determined by the main stack if it is invoked from there)
    Type: String
    Default: true

Затем в условие позже в шаблоне этот параметр (предположительно строка) сравнивается со значением буквальный, true.

Conditions:
  ...
  cSupportsNatGateway:
    !Equals
    - true
    - !Ref pSupportsNatGateway

Мой вопрос: как CloudFormation сравнивает буквальные значения и струны этих значений? Где это определено в документации AWS?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
3 670
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не знаю, где это задокументировано, но да! Похоже, что буквальные логические значения (или числа) и их строковые значения эквивалентны с точки зрения CloudFormation.

Я создал минимальный шаблон CloudFormation, чтобы проверить это:

---
AWSTemplateFormatVersion: 2010-09-09
Description: Test CloudFormation template

Parameters:

  pCreateCluster:
    Description: To create or not create?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'

Conditions:
  CreateClusterConditionTrue1:
    !Equals
    - !Ref pCreateCluster
    - 'true'

  CreateClusterConditionTrue2:
    !Equals
    - !Ref pCreateCluster
    - true

  CreateClusterConditionFalse1:
    !Equals
    - !Ref pCreateCluster
    - 'false'

  CreateClusterConditionFalse2:
    !Equals
    - !Ref pCreateCluster
    - false

Resources:

  rFargateCluster:
    Type: AWS::ECS::Cluster
    Condition: CreateClusterConditionTrue1
    Properties:
      ClusterName: "my-test-cluster"

Outputs:
  CreateClusterConditionTrue1:
    Value:
      !If
      - CreateClusterConditionTrue1
      - "The answer is True"
      - "The answer is False"
  CreateClusterConditionTrue2:
    Value:
      !If
      - CreateClusterConditionTrue2
      - "The answer is True"
      - "The answer is False"
  CreateClusterConditionFalse1:
    Value:
      !If
      - CreateClusterConditionFalse1
      - "The answer is True"
      - "The answer is False"
  CreateClusterConditionFalse2:
    Value:
      !If
      - CreateClusterConditionFalse2
      - "The answer is True"
      - "The answer is False"
...

И результаты показывают, что они на самом деле эквивалентны:

Key                             Value
CreateClusterConditionTrue1     The answer is True      
CreateClusterConditionTrue2     The answer is True      
CreateClusterConditionFalse2    The answer is False     
CreateClusterConditionFalse1    The answer is False

Другие вопросы по теме