Tengo varios valores de parámetros almacenados en Almacén de parámetros de AWS Systems Manager. Quiero usar estos parámetros de forma dinámica en una pila de AWS CloudFormation en función de mis requisitos.
Resolución
La siguiente resolución usa Windows y Linux como entornos de ejemplo para demostrar cómo usar diferentes parámetros de forma dinámica en una pila de CloudFormation.
-
Abra la consola de AWS Systems Manager.
-
En el panel de navegación, elija Almacén de parámetros.
-
Cree parámetros de Systems Manager de tipo Cadena para almacenar los ID de imágenes de máquina de Amazon (AMI) para Linux o Windows.
Linux:
LinuxAmiId - AMI-Id-for-Linux-resources
Alternativa:
Windows:
WindowsAmiId - AMI-Id-for-Windows-resources
Nota: Sustituya AMI-Id-for-Linux-resources y AMI-Id-for-Windows-resources por los ID de AMI de sus recursos.
-
Utilice el siguiente ejemplo de plantilla de CloudFormation para crear el parámetro que selecciona la AMI que se va a utilizar para el despliegue:
{
"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: En la plantilla anterior, si AmiToUse se selecciona como windows, entonces la condición CreateWindowsResources es true. CloudFormation usa el valor almacenado en WindowsAmiId para aprovisionar el recurso AWS::EC2::Instance. En Linux, la condición se evalúa como false y CloudFormation usa el valor almacenado en LinuxAmiId para aprovisionar el recurso AWS::EC2::Instance.
Para obtener más información sobre las referencias dinámicas, consulte Obtención de valores almacenados en otros servicios con referencias dinámicas.
Información relacionada
Dynamic references