web-dev-qa-db-fra.com

AWS: Comment spécifier un paramètre booléen dans un modèle CloudFormation

J'essaie de spécifier un paramètre booléen dans un modèle CloudFormation afin de pouvoir créer de manière conditionnelle des ressources en fonction d'un paramètre transmis.

En regardant la documentation ici et ici , il semblerait qu’il existe un manque perceptible de type de données booléen.

Quelle est la meilleure pratique pour spécifier un booléen? éventuellement Number avec 0 ou 1 ou String avec AllowedValues 'vrai' et 'faux'?

30
Willem van Ketwich

Les modèles Démarrage rapide constituent un bon point de référence semi-officiel sur la manière dont des modèles complexes peuvent/doivent être créés. Ils implémentent les valeurs booléennes des ressources conditionnelles exactement comme vous l'avez décrit, à l'aide d'un String avec AllowedValuestrue et false. Voici un exemple spécifique:

"EnableBanner": {
    "AllowedValues": [
        "true",
        "false"
    ],
    "Default": "false",
    "Description": "To include a banner to be displayed when connecting via SSH to the bastion, set this parameter to true",
    "Type": "String"
}

Un exemple similaire peut être trouvé dans le exemple d'utilisation conditionnelle d'une ressource existante dans la documentation CloudFormation, où les AllowedValues sont default ou NONE défaut).

Pour créer de manière conditionnelle une ressource basée sur un tel paramètre booléen, vous ajoutez une instruction Condition contenant un Fn::Equals Fonction intrinsèque correspondant à true, puis ajoutez une clé Condition à la ressource.

Voici un exemple de modèle complet et minimal:

Launch Stack

Parameters:
  CreateResource:
    Description: Whether I should create a resource.
    Default: false
    Type: String
    AllowedValues: [true, false]
Conditions:
  ShouldCreateResource:
    !Equals [true, !Ref CreateResource]
Resources:
  Resource:
    Type: AWS::CloudFormation::WaitConditionHandle
    Condition: ShouldCreateResource
47
wjordan