Plusieurs valeurs de paramètre sont stockées dans le magasin de paramètres AWS Systems Manager. Je souhaite utiliser ces paramètres de manière dynamique dans une pile AWS CloudFormation en fonction de mes besoins.
Résolution
La résolution suivante utilise Windows et Linux comme exemples d'environnement pour montrer comment utiliser différents paramètres de manière dynamique dans une pile CloudFormation.
-
Ouvrez la console AWS Systems Manager.
-
Dans le volet de navigation, sélectionnez Parameter Store.
-
Créez des paramètres Systems Manager de type Chaîne pour stocker les ID Amazon Machine Image (AMI) pour Linux ou Windows.
Linux :
LinuxAmiId - AMI-Id-for-Linux-resources
-ou-
Windows :
WindowsAmiId - AMI-Id-for-Windows-resources
Remarque : Remplacez AMI-Id-for-Linux-resources et AMI-Id-for-Windows-resources par les ID d’AMI de vos ressources.
-
Utilisez l'exemple de modèle CloudFormation suivant pour créer le paramètre qui sélectionne l'AMI à utiliser pour le déploiement :
{
"Parameters": {
"AmiToUse": {
"Type": "String",
"AllowedValues": [
"windows",
"linux"
]
}
},
"Conditions": {
"CreateWindowsResources": {
"Fn::Equals": [
"windows",
{
"Ref": "AmiToUse"
}
]
}
},
"Resources": {
"EC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": {
"Fn::If": [
"CreateWindowsResources",
"{{resolve:ssm:WindowsAmiId:1}}",
"{{resolve:ssm:LinuxAmiId:1}}"
]
}
}
}
}
}
Remarque : Dans le modèle précédent, si AmiToUse est sélectionné en tant que fenêtres, la condition CreateWindowsResources prend la valeur vrai. CloudFormation utilise la valeur stockée dans WindowsAmiId pour provisionner la ressource AWS::EC2::Instance. Pour Linux, la condition est évaluée à faux et CloudFormation utilise la valeur stockée dans LinuxAmiId pour provisionner la ressource AWS::EC2::Instance.
Pour plus d'informations sur le référencement dynamique, consultez la section Obtenir des valeurs stockées dans d'autres services à l'aide de références dynamiques.
Informations connexes
Références dynamiques