Ho più valori di parametri archiviati in AWS Systems Manager Parameter Store. Desidero utilizzare questi parametri in modo dinamico in uno stack AWS CloudFormation in base ai miei requisiti.
Risoluzione
La seguente soluzione utilizza Microsoft Windows e Linux come ambienti di esempio per dimostrare come utilizzare parametri diversi in modo dinamico in uno stack CloudFormation.
-
Apri la console AWS Systems Manager.
-
Nel pannello di navigazione, scegli Archivio dei parametri.
-
Crea parametri di Systems Manager come tipo String per archiviare gli ID delle Amazon Machine Image (AMI) per Linux o Windows.
Linux:
LinuxAmiId - AMI-Id-for-Linux-resources
-oppure-
Windows:
WindowsAmiId - AMI-Id-for-Windows-resources
Nota: sostituisci AMI-ID-for-Linux-Resources e AMI-ID-for-Windows-Resources con gli ID AMI per le risorse.
-
Utilizza il seguente template CloudFormation di esempio per creare il parametro che seleziona quale AMI utilizzare per l'implementazione:
{
"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}}"
]
}
}
}
}
}
Nota: nel template precedente, se si seleziona AmiToUse come windows, la condizione CreateWindowsResources restituisce true. CloudFormation utilizza il valore archiviato in WindowsAmiId per effettuare il provisioning della risorsa AWS::EC2::Instance. Per Linux, la condizione viene valutata come false e CloudFormation utilizza il valore archiviato in LinuxAmiId per fornire la risorsa AWS::EC2::Instance.
Per ulteriori informazioni sui riferimenti dinamici, consulta Get values stored in other services using dynamic references (Recupero dei valori archiviati in altri servizi utilizzando riferimenti dinamici).
Informazioni correlate
Dynamic references (Riferimenti dinamici)