Tenho vários valores de parâmetros armazenados no AWS Systems Manager Parameter Store. Quero usar esses parâmetros dinamicamente em uma pilha do AWS CloudFormation com base nos meus requisitos.
Resolução
A resolução a seguir usa Windows e Linux como exemplos de ambientes para demonstrar como usar parâmetros diferentes dinamicamente em uma pilha do CloudFormation.
-
Abra o console do AWS Systems Manager.
-
No painel de navegação, escolha Grupos de parâmetros.
-
Crie parâmetros do Systems Manager como tipo String para armazenar IDs de imagem de máquina da Amazon (AMI) para Linux ou Windows.
Linux:
LinuxAmiId - AMI-Id-for-Linux-resources
-or-
Windows:
WindowsAmiId - AMI-Id-for-Windows-resources
Observação: Substitua AMI-Id-for-Linux-Resources e AMI-Id-for-Windows-resources pelos IDs de AMI dos seus recursos.
-
Use o exemplo de modelo do CloudFormation a seguir para criar o parâmetro que seleciona qual AMI usar para implantação:
{
"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}}"
]
}
}
}
}
}
Observação: No modelo anterior, se AmiToUse for selecionado como Windows, a condição CreateWindowsResources será avaliada como verdadeiro. O CloudFormation usa o valor armazenado no WindowsAmiId para provisionar o recurso AWS::EC2::Instance. Para Linux, a condição é avaliada como falso e o CloudFormation usa o valor armazenado no LinuxAmiId para provisionar o recurso AWS::EC2::Instance.
Para obter mais informações sobre referenciamento dinâmico, consulte Obter valores armazenados em outros serviços usando referências dinâmicas.
Informações relacionadas
Referências dinâmicas