Quero atualizações contínuas em meu grupo do Auto Scaling do Amazon Elastic Compute Cloud (Amazon EC2) em cada atualização de pilha do AWS CloudFormation. Não quero alterar o modelo de inicialização toda vez.
Resolução
Para implantar atualizações contínuas para um grupo do Auto Scaling, use o atributo UpdatePolicy.
Na configuração de execução do modelo do CloudFormation, é uma prática recomendada referenciar o parâmetro Toggle na propriedade UserData do tipo de recurso AWS::EC2::LaunchTemplate. Ao alterar o valor de Toggle, por exemplo, de verdadeiro para falso, durante uma atualização de pilha, altere a propriedade de UserData. Essa ação faz com que o CloudFormation crie uma nova versão do modelo de inicialização.
A resolução a seguir pressupõe que você configurou a política AutoScalingRollingUpdate para o grupo do Auto Scaling e configurou este para fazer referência a AWS::EC2::LaunchTemplate.
Importante: certifique-se de não interromper outros elementos na propriedade UserData ao adicionar o parâmetro Toggle ao seu modelo.
Para configurar atualizações contínuas, conclua as seguintes etapas:
-
Em seu modelo do CloudFormation, defina Toggle como parâmetro.
Para um arquivo JSON, insira o seguinte código:
"Parameters": {
"Toggle": {
"Type": "String",
"AllowedValues": [
"true",
"false"
],
"Default": "true",
"Description": "Toggle parameter to force ASG update"
}
}
Para um arquivo YAML, insira o seguinte código:
Parameters:
Toggle:
Type: String
AllowedValues:
- 'true'
- 'false'
Default: 'true'
Description: 'Toggle parameter to force ASG update'
-
Na configuração de execução do modelo, faça referência ao parâmetro Toggle na propriedade UserData.
Exemplo de JSON:
"LaunchTemplate": {
"Type": "AWS::EC2::LaunchTemplate",
"Properties": {
"LaunchTemplateData": {
"ImageId": { "Ref": "ImageId" },
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#!/bin/bash\n",
"echo \"Toggle parameter is set to ",
{
"Ref": "Toggle"
},
"\"\n"
...
...
]
]
}
},
"InstanceType": { "Ref": "InstanceType" }
}
}
Exemplo de YAML:
LaunchTemplate:
Type: AWS::EC2::LaunchTemplate
Properties:
LaunchTemplateData:
ImageId: !Ref ImageId
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
echo "Toggle parameter is set to ${Toggle}"
...
...
InstanceType: !Ref InstanceType
-
Crie sua pilha.
-
Para implantar atualizações contínuas, altere o valor do parâmetro Toggle de verdadeiro para falso ou de falso para verdadeiro, dependendo da configuração atual.
Observação: você também pode usar a resolução anterior em propriedades em que uma atualização exige uma substituição, como LaunchTemplateName.