Come posso avviare gli aggiornamenti continui quando non ci sono modifiche alla configurazione di avvio in CloudFormation?

2 minuti di lettura
0

Desidero avviare gli aggiornamenti continui nel mio gruppo Auto Scaling su ogni aggiornamento dello stack di AWS CloudFormation, senza modificare la configurazione di avvio.

Breve descrizione

È possibile avviare aggiornamenti continui per un gruppo Auto Scaling solo se si soddisfano condizioni specifiche dell'attributo updatePolicy.

Per avviare gli aggiornamenti continui, puoi creare un parametro di attivazione nella configurazione di avvio del tuo modello CloudFormation. Tuttavia, se modificate il valore del parametro toggle durante un aggiornamento dello stack, la proprietà UserData viene modificata. Qualsiasi modifica a UserData richiede la sostituzione. CloudFormation rileva la modifica a UserData e quindi sostituisce la risorsa LaunchConfiguration. Questa sostituzione avvia l'aggiornamento continuo di Auto Scaling, come definito dall'attributo UpdatePolicy.

Risoluzione

I passaggi seguenti presuppongono che la politica AutoScalingRollingUpdate sia configurata per il gruppo Auto Scaling e che il gruppo Auto Scaling sia configurato per fare riferimento a LaunchConfiguration.

Importante: Assicurati di non interrompere altri elementi nella proprietà UserData quando aggiungi il parametro toggle al tuo modello. Inoltre, non aggiungere il parametro toggle prima cfn-signal.

  1. Nel tuo modello CloudFormation, definisci Toggle come parametro.

JSON:

"Parameters": {
        "Toggle": {
            "Type": "String",
            "AllowedValues": ["true","false"],
            "Default": "true"
        }
    }

YAML:

Parameters:
  Toggle:
    Type: String
    AllowedValues:
      - 'true'
      - 'false'
    Default: 'true'
  1. Nella configurazione di avvio del modello, fai riferimento al parametro toggle nella proprietà UserData, quindi avvia lo stack. Guarda i seguenti esempi JSON e YAML.

JSON:

"LaunchConfig" : {
  "Type" : "AWS::AutoScaling::LaunchConfiguration",
  "Properties" : {
     "ImageId" : { "Ref" : "ImageID" },
     "UserData" : { "Fn::Base64" : { "Ref" : "Toggle" }
         ...
         ...
     },        
  "InstanceType" : { "Ref" : "Type" }
  }
}

YAML:

LaunchConfig:
  Type: 'AWS::AutoScaling::LaunchConfiguration'
  Properties:
    ImageId: !Ref ImageID
    UserData:
      'Fn::Base64': !Ref Toggle
      ...
      ...
    InstanceType: !Ref Type

Importante: Per avviare gli aggiornamenti continui quando aggiorni lo stack, modifica il valore del parametro da true a false o da false a true, a seconda dell'impostazione iniziale.

Nota: Puoi utilizzare la soluzione con parametri toggle su proprietà in cui un aggiornamento richiede la sostituzione, come LaunchConfigurationName, e per risorse come AWS::EC2::LaunchTemplate.


AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa