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'?
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 AllowedValues
true
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:
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