Je souhaite recevoir des mises à jour régulières dans mon groupe Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling pour chaque mise à jour de la pile AWS CloudFormation. Je ne souhaite pas modifier le modèle de lancement à chaque fois.
Résolution
Pour lancer des mises à jour continues pour un groupe Auto Scaling, utilisez l'attribut UpdatePolicy.
Dans la configuration de lancement de votre modèle CloudFormation, il est recommandé de référencer le paramètre Activer/désactiver dans la propriété UserData de votre type de ressource AWS::EC2::LaunchTemplate. Lorsque vous modifiez la valeur de Activer/désactiver, par exemple de vrai à faux, lors d'une mise à jour de pile, vous modifiez la propriété UserData. Cette action invite CloudFormation à créer une nouvelle version du modèle de lancement.
La résolution suivante suppose que vous avez configuré la stratégie AutoScalingRollingUpdate pour votre groupe Auto Scaling et que vous avez configuré votre groupe Auto Scaling pour faire référence à AWS::EC2::LaunchTemplate.
Important : Assurez-vous de ne pas perturber les autres éléments de la propriété UserData lorsque vous ajoutez le paramètre Activer/désactiver à votre modèle.
Pour configurer les mises à jour continues, procédez comme suit :
-
Dans votre modèle CloudFormation, définissez Activer/désactiver comme paramètre.
Pour un fichier JSON, saisissez le code suivant :
"Parameters": {
"Toggle": {
"Type": "String",
"AllowedValues": [
"true",
"false"
],
"Default": "true",
"Description": "Toggle parameter to force ASG update"
}
}
Pour un fichier YAML, saisissez le code suivant :
Parameters:
Toggle:
Type: String
AllowedValues:
- 'true'
- 'false'
Default: 'true'
Description: 'Toggle parameter to force ASG update'
-
Dans la configuration de lancement de votre modèle, faites référence au paramètre Activer/désactiver dans la propriété UserData.
Exemple 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" }
}
}
Exemple 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
-
Créez votre pile.
-
Pour lancer des mises à jour continues, modifiez la valeur du paramètre Activer/désactiver de vrai à faux ou de faux à vrai, en fonction de son paramètre actuel.
Remarque : Vous pouvez également utiliser la résolution précédente sur les propriétés pour lesquelles une mise à jour requiert un remplacement, comme LaunchTemplateName.