Quiero recibir actualizaciones continuas en mi grupo de escalamiento automático de Amazon Elastic Compute Cloud (Amazon EC2) en cada actualización de la pila de AWS CloudFormation. No quiero modificar la plantilla de lanzamiento cada vez.
Resolución
Para iniciar actualizaciones continuas para un grupo de escalamiento automático, usa el atributo UpdatePolicy.
En la configuración de lanzamiento de la plantilla de CloudFormation, se recomienda hacer referencia al parámetro Toggle de la propiedad UserData de tu tipo de recurso AWS::EC2::LaunchTemplate. Cuando cambias el valor de Toggle (por ejemplo, de true a false) durante una actualización de la pila, modificas la propiedad UserData. Esta acción pide a CloudFormation que cree una nueva versión de la plantilla de lanzamiento.
La siguiente resolución presupone que has configurado la política AutoScalingRollingUpdate para el grupo de escalamiento automático y que has configurado el grupo de escalamiento automático para que haga referencia a AWS::EC2::LaunchTemplate.
Importante: Asegúrate de no alterar otros elementos de la propiedad UserData al añadir el parámetro Toggle a la plantilla.
Para configurar las actualizaciones continuas, sigue estos pasos:
-
En la plantilla de CloudFormation, define Toggle como parámetro.
Para un archivo JSON, introduce el siguiente código:
"Parameters": {
"Toggle": {
"Type": "String",
"AllowedValues": [
"true",
"false"
],
"Default": "true",
"Description": "Toggle parameter to force ASG update"
}
}
Para un archivo YAML, introduce el siguiente código:
Parameters:
Toggle:
Type: String
AllowedValues:
- 'true'
- 'false'
Default: 'true'
Description: 'Toggle parameter to force ASG update'
-
En la configuración de lanzamiento de la plantilla, haz referencia al parámetro Toggle de la propiedad UserData.
Ejemplo 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" }
}
}
Ejemplo 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
-
Crea la pila.
-
Para iniciar las actualizaciones, cambia el valor del parámetro Toggle de true a false o de false a true, según su configuración actual.
Nota: También puedes usar la resolución anterior en propiedades en las que una actualización requiere un reemplazo, como LaunchTemplateName.