Come posso avviare aggiornamenti in sequenza sul mio gruppo Auto Scaling quando non ci sono modifiche al modello di avvio in CloudFormation?
Desidero aggiornamenti in sequenza nel mio gruppo Auto Scaling di Amazon Elastic Compute Cloud (Amazon EC2) su ogni aggiornamento dello stack AWS CloudFormation. Non voglio modificare ogni volta il modello di avvio.
Risoluzione
Per avviare aggiornamenti in sequenza per un gruppo Auto Scaling, utilizza l'attributo UpdatePolicy.
Nella configurazione di avvio del modello di CloudFormation, come best practice è consigliabile fare riferimento al parametro Toggle nella proprietà UserData del tipo di risorsa AWS::EC2::LaunchTemplate. Quando si modifica il valore Toggle, ad esempio da true a false, durante un aggiornamento dello stack, si modifica la proprietà UserData. Questa azione richiede a CloudFormation di creare una nuova versione del modello di avvio.
La seguente risoluzione presuppone che la policy AutoScalingRollingUpdate per il gruppo Auto Scaling e il gruppo Auto Scaling siano stati configurati per fare riferimento ad AWS::EC2::LaunchTemplate.
Importante: assicurati di non interrompere altri elementi nella proprietà UserData quando aggiungi il parametro Toggle al tuo modello.
Per configurare gli aggiornamenti in sequenza, completa i seguenti passaggi:
-
Nel modello di CloudFormation, definisci Toggle come un parametro.
Per un file JSON, inserisci il codice seguente:"Parameters": { "Toggle": { "Type": "String", "AllowedValues": [ "true", "false" ], "Default": "true", "Description": "Toggle parameter to force ASG update" } }
Per un file YAML, inserisci il codice seguente:
Parameters: Toggle: Type: String AllowedValues: - 'true' - 'false' Default: 'true' Description: 'Toggle parameter to force ASG update'
-
Nella configurazione di avvio del modello, fai riferimento al parametro Toggle nella proprietà UserData.
Esempio 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" } } }
Esempio 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
-
Per avviare gli aggiornamenti in sequenza, modifica il valore del parametro Interruttore da true a false o da false a true, a seconda dell'impostazione corrente.
Nota: puoi anche utilizzare la risoluzione precedente sulle proprietà in cui un aggiornamento richiede una sostituzione, ad esempio LaunchTemplateName.
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 5 anni fa
- AWS UFFICIALEAggiornata un anno fa