Implementazioni su una piattaforma Amazon Compute ECS - AWS CodeDeploy

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementazioni su una piattaforma Amazon Compute ECS

Questo argomento fornisce informazioni sui componenti e sul flusso di lavoro delle CodeDeploy distribuzioni che utilizzano la piattaforma di ECS calcolo Amazon.

Prima di iniziare una ECS distribuzione Amazon

Prima di iniziare la distribuzione di un'ECSapplicazione Amazon, devi avere a portata di mano quanto segue. Alcuni requisiti vengono specificati al momento della creazione del gruppo di distribuzione, altri nel AppSpec file.

Requisito Specificato nel
ECSCluster Amazon Gruppo di distribuzione
ECSServizio Amazon Gruppo di distribuzione
Application Load Balancer o Network Load Balancer Gruppo di distribuzione
Listener di produzione Gruppo di distribuzione
Listener di test (opzionale) Gruppo di distribuzione
Due gruppi target Gruppo di distribuzione
Definizione ECS delle attività di Amazon AppSpec file
Nome del container AppSpec fascicolo
Porta del container AppSpec fascicolo
ECSCluster Amazon

Un ECS cluster Amazon è un raggruppamento logico di attività o servizi. Specifichi il ECS cluster Amazon che contiene il tuo ECS servizio Amazon quando crei il gruppo di distribuzione dell' CodeDeploy applicazione. Per ulteriori informazioni, consulta Amazon ECS clusters nella Amazon Elastic Container Service User Guide.

ECSServizio Amazon

Un ECS servizio Amazon mantiene ed esegue istanze specifiche di una definizione di attività in un ECS cluster Amazon. Il tuo ECS servizio Amazon deve essere abilitato per CodeDeploy. Per impostazione predefinita, un ECS servizio Amazon è abilitato per le ECS distribuzioni Amazon. Quando crei il tuo gruppo di distribuzione, scegli di distribuire un ECS servizio Amazon che si trova nel tuo ECS cluster Amazon. Per ulteriori informazioni, consulta ECSi servizi Amazon nella Guida per l'utente di Amazon Elastic Container Service.

Application Load Balancer o Network Load Balancer

Devi utilizzare Elastic Load Balancing con il ECS servizio Amazon che desideri aggiornare con una distribuzione AmazonECS. È possibile utilizzare un Application Load Balancer o un Network Load Balancer. Ti consigliamo un Application Load Balancer per sfruttare funzionalità come la mappatura dinamica delle porte e le regole di routing e priorità basate sui percorsi. Il load balancer viene specificato quando si crea il gruppo di distribuzione dell'applicazione CodeDeploy . Per ulteriori informazioni, consulta Configura un sistema di bilanciamento del carico, gruppi target e listener per le distribuzioni di CodeDeploy Amazon ECS la sezione Creazione di un sistema di bilanciamento del carico nella Guida per l'utente di Amazon Elastic Container Service.

Uno o due ascoltatori

Un listener viene utilizzato dal sistema di bilanciamento del carico per indirizzare il traffico verso i tuoi gruppi target. Un listener di produzione è obbligatorio. Puoi specificare un secondo listener di test opzionale che indirizza il traffico verso il set di attività di sostituzione mentre esegui test di convalida. Puoi specificare uno o entrambi i listener al momento della creazione di un gruppo di distribuzione. Se utilizzi la ECS console Amazon per creare il tuo ECS servizio Amazon, i tuoi listener vengono creati per te. Per ulteriori informazioni, consulta Listeners for your application load balancer nella Elastic Load Balancing User Guide e Creazione di un servizio nella Amazon Elastic Container Service User Guide.

Due gruppi ECS target di Amazon

Un gruppo target viene utilizzato per instradare il traffico verso un target registrato. Una ECS distribuzione Amazon richiede due gruppi target: uno per il set di attività originale dell'ECSapplicazione Amazon e uno per il set di attività sostitutivo. Durante la distribuzione, CodeDeploy crea un set di attività sostitutivo e reindirizza il traffico dal set di attività originale a quello nuovo. I gruppi target vengono specificati quando si crea il gruppo di distribuzione CodeDeploy dell'applicazione.

Durante una distribuzione, CodeDeploy determina quale gruppo target è associato all'attività impostata nel tuo ECS servizio Amazon con lo stato PRIMARY (questo è il set di attività originale) e associa un gruppo target ad esso, quindi associa l'altro gruppo target al set di attività sostitutivo. Se effettui un'altra distribuzione, il gruppo target associato al set di attività originale della distribuzione attuale viene associato al set di attività di sostituzione della distribuzione successiva. Per ulteriori informazioni, consulta Target groups for your application load balancer nella Elastic Load Balancing User Guide.

Una definizione di ECS attività Amazon

È necessaria una definizione di attività per eseguire il contenitore Docker che contiene l'ECSapplicazione Amazon. Specificate la definizione ARN dell'attività nel AppSpec file CodeDeploy dell'applicazione. Per ulteriori informazioni, consulta le definizioni delle ECS attività di Amazon nella Guida per l'utente di Amazon Elastic Container Service e AppSpec sezione «risorse» per le ECS implementazioni di Amazon.

Un contenitore per la tua ECS applicazione Amazon

Un container Docker è un'unità di software che include il codice e le sue dipendenze in modo che l'applicazione possa essere eseguita. Un container isola l'applicazione in modo che funzioni in diversi ambienti di elaborazione. Il sistema di bilanciamento del carico indirizza il traffico verso un container incluso nel set di attività dell'ECSapplicazione Amazon. Specifichi il nome del contenitore nel file CodeDeploy dell' AppSpec applicazione. Il contenitore specificato nel AppSpec file deve essere uno dei contenitori specificati nella definizione dell'ECSattività Amazon. Per ulteriori informazioni, consulta Cos'è Amazon Elastic Container Service? nella Guida per l'utente di Amazon Elastic Container Service e AppSpec sezione «risorse» per le ECS implementazioni di Amazon.

Una porta per il set di attività sostitutivo

Durante la ECS distribuzione su Amazon, il sistema di bilanciamento del carico indirizza il traffico verso questa porta sul contenitore specificato nel file dell' CodeDeploy AppSpec applicazione. Devi specificare la porta nel file CodeDeploy dell'applicazione. AppSpec Per ulteriori informazioni, consulta AppSpec sezione «risorse» per le ECS implementazioni di Amazon.

Flusso di lavoro di implementazione (alto livello) su una piattaforma di ECS elaborazione Amazon

Il diagramma seguente mostra le fasi principali della distribuzione di ECS servizi Amazon aggiornati.

In che modo CodeDeploy distribuisce un'applicazione come set di attività in AmazonECS.

Queste fasi includono:

  1. Crea un' AWS CodeDeploy applicazione specificando un nome che rappresenti in modo univoco ciò che desideri distribuire. Per distribuire un'ECSapplicazione Amazon, nella tua AWS CodeDeploy applicazione, scegli la piattaforma di ECS calcolo Amazon. CodeDeploy utilizza un'applicazione durante una distribuzione per fare riferimento ai componenti di distribuzione corretti, come il gruppo di distribuzione, i gruppi target, gli ascoltatori, il comportamento di reindirizzamento del traffico e la revisione dell'applicazione. Per ulteriori informazioni, consulta Crea un'applicazione con CodeDeploy.

  2. La creazione di un gruppo di distribuzione specificando:

    • Il nome del gruppo di distribuzione.

    • Il tuo ECS cluster Amazon e il nome del servizio. Il controller di distribuzione del ECS servizio Amazon deve essere impostato su CodeDeploy.

    • Il listener di produzione, un listener di test opzionale e i gruppi target utilizzati durante una distribuzione.

    • Impostazioni di distribuzione, ad esempio quando reindirizzare il traffico di produzione verso l'ECSattività Amazon sostitutiva impostata nel tuo ECS servizio Amazon e quando terminare l'ECSattività Amazon originale impostata nel tuo servizio Amazon. ECS

    • Impostazioni opzionali, ad esempio trigger, allarmi e comportamento di rollback.

  3. Specificare un file (file) AppSpec con le specifiche dell'applicazione. Puoi caricarlo su Amazon S3, inserirlo nella console in JSON formato YAML o specificarlo con o. AWS CLI SDK Il AppSpec file specifica una definizione di ECS attività Amazon per la distribuzione, un nome di contenitore e una mappatura delle porte utilizzati per instradare il traffico e le funzioni Lambda vengono eseguite dopo gli hook del ciclo di vita della distribuzione. Il nome del contenitore deve essere un contenitore nella definizione dell'ECSattività Amazon. Per ulteriori informazioni, consulta Utilizzo delle revisioni delle applicazioni per CodeDeploy.

  4. Implementa la revisione dell'applicazione. AWS CodeDeploy reindirizza il traffico dalla versione originale di un set di attività nel tuo ECS servizio Amazon verso un nuovo set di attività sostitutivo. I gruppi target specificati nel gruppo di distribuzione vengono utilizzati per instradare il traffico verso il set di attività originale e di sostituzione. Una volta completata la distribuzione, il set di attività originale viene terminato. Puoi specificare un listener di test opzionale per inoltrare il traffico di test verso la versione di sostituzione prima che il traffico venga reinstradato. Per ulteriori informazioni, consulta Crea una distribuzione con CodeDeploy.

  5. Il controllo dei risultati della distribuzione. Per ulteriori informazioni, consulta Monitoraggio delle implementazioni in CodeDeploy.

Cosa succede durante una ECS distribuzione Amazon

Prima di iniziare una ECS distribuzione Amazon con un listener di test, devi configurarne i componenti. Per ulteriori informazioni, consulta Prima di iniziare una ECS distribuzione Amazon.

Il diagramma seguente mostra la relazione tra questi componenti quando una ECS distribuzione Amazon è pronta per l'avvio.

La relazione tra il sistema di bilanciamento del carico, gli ascoltatori, i gruppi target e le attività impostate quando una ECS distribuzione Amazon è pronta per l'avvio.

All'avvio della distribuzione, gli eventi del ciclo di vita della distribuzione iniziano a essere eseguiti uno alla volta. Alcuni eventi del ciclo di vita sono hook che eseguono solo le funzioni Lambda specificate nel file. AppSpec Gli eventi del ciclo di vita della distribuzione nella seguente tabella sono elencati nell'ordine in cui vengono eseguiti. Per ulteriori informazioni, consulta AppSpec sezione 'hooks' per una distribuzione Amazon ECS.

Evento del ciclo di vita Azione relativa all'evento del ciclo di vita
BeforeInstall(un gancio per le funzioni Lambda) Esegui le funzioni Lambda.
Installa Configurare il set di attività di sostituzione.
AfterInstall(un gancio per le funzioni Lambda) Esegui le funzioni Lambda.
AllowTestTraffic Instradare il traffico dal listener di test al gruppo target 2.
AfterAllowTestTraffic(un gancio per le funzioni Lambda) Esegui le funzioni Lambda.
BeforeAllowTraffic(un gancio per le funzioni Lambda) Esegui le funzioni Lambda.
AllowTraffic Instradare il traffico listener di produzione al gruppo target 2.
AfterAllowTraffic Esegui le funzioni Lambda.

Nota

Le funzioni Lambda in un hook sono opzionali.

  1. Esegui tutte le funzioni Lambda specificate nell'BeforeInstallhook del file. AppSpec

  2. Durante l'evento del ciclo di vita Install:

    1. Nel tuo ECS servizio Amazon viene creato un set di attività sostitutivo.

    2. Viene installata l'applicazione containerizzata aggiornata nel set di attività di sostituzione.

    3. Viene associato il secondo gruppo target al set di attività di sostituzione.

    Questo diagramma mostra i componenti di distribuzione con il nuovo set di attività di sostituzione. L'applicazione containerizzata è all'interno del set di attività. Il set di attività è composto da tre attività. Un'applicazione può avere un numero illimitato di attività. Il secondo gruppo target è ora associato al set di attività di sostituzione.

    I componenti di distribuzione con il nuovo set di attività sostitutivo. L'applicazione containerizzata è all'interno del set di attività. Il set di attività è composto da tre attività. Il secondo gruppo target è ora associato al set di attività di sostituzione.
  3. Esegui tutte le funzioni Lambda specificate nell'AfterInstallhook del file. AppSpec

  4. Viene richiamato l'evento AllowTestTraffic. Durante questo evento del ciclo di vita, il listener di test instrada il traffico all'applicazione containerizzata aggiornata.

    Il listener di test indirizza il traffico verso l'applicazione containerizzata aggiornata.
  5. Esegui tutte le funzioni Lambda specificate nell'AfterAllowTestTraffichook del file. AppSpec Le funzioni Lambda possono convalidare l'implementazione utilizzando il traffico di test. Ad esempio, una funzione Lambda può fornire traffico al listener di test e tracciare i parametri dal set di attività di sostituzione. Se i rollback sono configurati, puoi configurare un CloudWatch allarme che attiva un rollback quando il test di convalida nella funzione Lambda fallisce.

    Una volta completati i test di convalida, si verifica una delle seguenti condizioni:

    • Se la convalida non riesce e sono configurati i rollback, lo stato della distribuzione viene contrassegnato Failed e i componenti vengono ripristinati allo stato di avvio della distribuzione.

    • Se la convalida non riesce e non sono configurati i rollback, lo stato della distribuzione viene contrassegnato Failed e i componenti rimangono nello stato corrente.

    • Se la convalida riesce, la distribuzione continua all'hook BeforeAllowTraffic.

    Per ulteriori informazioni, consulta Monitoraggio delle distribuzioni con allarmi in CloudWatch CodeDeploy, Rollback automatici e Configura le opzioni avanzate per un gruppo di distribuzione.

  6. Esegui tutte le funzioni Lambda specificate nell'BeforeAllowTraffichook del file. AppSpec

  7. Viene richiamato l'evento AllowTraffic. Il traffico di produzione viene reinstradato dal set di attività originale al set di attività di sostituzione. Il seguente diagramma mostra il set di attività di sostituzione che riceve il traffico di produzione.

    Il set di attività sostitutivo riceve traffico di produzione.
  8. Esegui tutte le funzioni Lambda specificate nell'AfterAllowTraffichook del file. AppSpec

  9. All'esito positivo di tutti gli eventi, lo stato della distribuzione viene impostato su Succeeded e il set di attività originale viene rimosso.

    Tutti gli eventi hanno avuto esito positivo.

Caricamento della revisione dell'applicazione

Inserisci un AppSpec file in Amazon S3 o inseriscilo direttamente nella console o. AWS CLI Per ulteriori informazioni, consulta Application Specification Files.

Creazione di gruppi di applicazioni e distribuzione

Un gruppo di CodeDeploy distribuzione su una piattaforma di ECS elaborazione Amazon identifica gli ascoltatori per servire il traffico verso la tua ECS applicazione Amazon aggiornata e due gruppi target utilizzati durante la distribuzione. Un gruppo di distribuzione definisce anche un set di opzioni di configurazione, ad esempio allarmi e configurazioni di rollback.

Implementazione della revisione dell'applicazione

Ora sei pronto per distribuire il ECS servizio Amazon aggiornato specificato nel tuo gruppo di distribuzione. Puoi usare la CodeDeploy console o il comando create-deployment. Per controllare la distribuzione puoi specificare parametri quali la revisione e il gruppo di distribuzione.

Aggiornamento dell'applicazione

È possibile aggiornare l'applicazione e quindi utilizzare la CodeDeploy console o chiamare il comando create-deployment per inviare una revisione.

Distribuzioni interrotte e non riuscite

È possibile utilizzare la CodeDeploy console o il comando stop-deployment per interrompere una distribuzione. Quando si tenta di arrestare la distribuzione, accade una di queste tre cose:

  • La distribuzione si arresta e l'operazione restituisce uno stato di successo. In questo caso, non vengono più eseguiti eventi del ciclo di vita della distribuzione sul gruppo di distribuzione per la distribuzione interrotta.

  • La distribuzione non si arresta immediatamente e l'operazione restituisce uno stato in attesa. In questo caso, alcuni eventi del ciclo di vita di distribuzione potrebbe essere ancora in esecuzione sul gruppo di distribuzione. Una volta completata l'operazione in attesa, le chiamate successive per fermare la distribuzione restituiscono uno stato di successo.

  • La distribuzione non è in grado di arrestarsi e l'operazione restituisce un errore. Per ulteriori informazioni, vedere Informazioni sugli errori ed Errori comuni nella Guida di riferimento. AWS CodeDeploy API

Ridistribuzioni e ripristini della distribuzione

CodeDeploy implementa i rollback reindirizzando il traffico dal set di attività sostitutivo al set di attività originale.

Puoi configurare un gruppo di distribuzione in modo che esegua automaticamente il rollback della distribuzione quando si soddisfano determinate condizioni, incluso quando una distribuzione non ha successo o viene raggiunta una soglia di monitoraggio degli allarmi. È inoltre possibile sostituire le impostazioni di rollback specificati per un gruppo di distribuzione in una singola distribuzione.

È inoltre possibile scegliere di eseguire il rollback di una distribuzione non riuscita ridistribuendo manualmente una revisione distribuita in precedenza.

In tutti i casi, la distribuzione nuova o su cui è stato eseguito un rollback viene assegnato il relativo ID della distribuzione. La CodeDeploy console visualizza un elenco di distribuzioni che sono il risultato di una distribuzione automatica.

Se effettui una nuova distribuzione, il gruppo target associato al set di attività originale della distribuzione attuale viene associato al set di attività di sostituzione della nuova distribuzione.

Per ulteriori informazioni, consulta Ridistribuisci e ripristina una distribuzione con CodeDeploy.

Implementazioni Amazon ECS blue/green tramite AWS CloudFormation

Puoi utilizzarlo AWS CloudFormation per gestire le distribuzioni di Amazon ECS blue/green tramite. CodeDeploy Per ulteriori informazioni, consulta Crea una distribuzione Amazon ECS blue/green tramite AWS CloudFormation.

Nota

La gestione delle distribuzioni Amazon ECS blue/green con non AWS CloudFormation è disponibile nella regione Asia Pacifico (Osaka).