Ich habe mehrere Parameterwerte im AWS Systems Manager Parameter Store gespeichert. Ich möchte diese Parameter dynamisch in einem AWS CloudFormation-Stack verwenden, der meinen Anforderungen entspricht.
Lösung
In der folgenden Lösung werden Windows und Linux als Beispielumgebungen verwendet, um zu demonstrieren, wie verschiedene Parameter dynamisch in einem CloudFormation-Stack verwendet werden.
-
Öffne die AWS Systems Manager-Konsole.
-
Wähle im Navigationsbereich Parameter Store aus.
-
Erstelle Systems Manager-Parameter als Typ String, um Amazon Machine Image (AMI)-IDs für Linux oder Windows zu speichern.
Linux:
LinuxAmiId - AMI-Id-for-Linux-resources
-oder-
Windows:
WindowsAmiId - AMI-Id-for-Windows-resources
Hinweis: Ersetze AMI-Id-for-Linux-resources und AMI-Id-for-Windows-resources durch die AMI-IDs für deine Ressourcen.
-
Verwende die folgende CloudFormation-Beispielvorlage, um den Parameter zu erstellen, der auswählt, welches AMI für die Bereitstellung verwendet werden soll:
{
"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}}"
]
}
}
}
}
}
Hinweis: Wenn in der vorherigen Vorlage AmiToUse als windows ausgewählt ist, wird die Bedingung CreateWindowsResources als wahr ausgewertet. CloudFormation verwendet den unter WindowsAmiId gespeicherten Wert, um die Ressource AWS::EC2::Instance bereitzustellen. Für Linux wird die Bedingung als falsch ausgewertet, und CloudFormation verwendet den unter LinuxAmiId gespeicherten Wert, um die Ressource AWS::EC2::Instance bereitzustellen.
Weitere Informationen zur dynamischen Referenzierung findest du unter Abrufen von Werten, die in anderen Services gespeichert sind, unter Verwendung dynamischer Referenzen.
Ähnliche Informationen
Dynamische Referenzen