Lifecycle hook per le implementazioni di servizi Amazon ECS - Amazon Elastic Container Service

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à.

Lifecycle hook per le implementazioni di servizi Amazon ECS

Quando inizia un'implementazione, passa attraverso le fasi del ciclo di vita. Queste fasi possono trovarsi in stati come IN_PROGRESS o in stato di successo. Puoi utilizzare i lifecycle hook, che sono funzioni Lambda che Amazon ECS esegue per tuo conto in fasi specifiche del ciclo di vita. Le funzioni possono essere una delle seguenti:

  • Un'API asincrona che convalida il controllo sanitario entro 15 minuti.

  • Un'API di sondaggio che avvia un altro processo asincrono che valuta il completamento del ciclo di vita dell'hook.

Al termine dell'esecuzione, la funzione deve restituire a affinché la distribuzione continui. hookStatus Se a non hookStatus viene restituito o se la funzione fallisce, la distribuzione viene ripristinata. I seguenti sono i hookStatus valori:

  • SUCCEEDED- l'implementazione continua fino alla fase successiva del ciclo di vita

  • FAILED— la distribuzione torna all'ultima implementazione riuscita.

  • IN_PROGRESS— Amazon ECS esegue nuovamente la funzione dopo un breve periodo di tempo. Per impostazione predefinita, si tratta di un intervallo di 30 secondi, tuttavia questo valore è personalizzabile restituendo un callBackDelaySeconds insieme a. hookStatus

L'esempio seguente mostra come restituire un hookStatus con un ritardo di callback personalizzato. In questo esempio, Amazon ECS riproverebbe questo hook in 60 secondi invece dei 30 secondi predefiniti:

{ "hookStatus": "IN_PROGRESS", "callBackDelaySeconds": 60 }

Quando si verifica un rollback, Amazon ECS esegue gli hook del ciclo di vita per le seguenti fasi del ciclo di vita:

  • PRODUCTION_TRAFFIC_SHIFT

  • TEST_TRAFFIC_SHIFT

Carichi utili relativi al ciclo di vita

Quando configuri i lifecycle hook per le tue distribuzioni di servizi ECS, Amazon ECS richiama questi hook in fasi specifiche del processo di distribuzione. Ogni fase del ciclo di vita fornisce un payload JSON con informazioni sullo stato corrente della distribuzione. Questo documento descrive la struttura del payload per ogni fase del ciclo di vita.

Struttura comune del carico utile

I payload in tutte le fasi del ciclo di vita includono i seguenti campi comuni:

  • serviceArn- L'Amazon Resource Name (ARN) del servizio.

  • targetServiceRevisionArn- L'ARN della revisione del servizio di destinazione in fase di implementazione.

  • testTrafficWeights- Una mappa della revisione del servizio in base ARNs alle corrispondenti percentuali di peso del traffico di test.

  • productionTrafficWeights- Una mappa della revisione dei servizi in base ARNs alle corrispondenti percentuali di peso del traffico di produzione.

Carichi utili in fase di ciclo di vita

RECONCILE_SERVICE

Questa fase si verifica all'inizio del processo di distribuzione quando il servizio viene riconciliato. Di seguito viene illustrato un esempio di payload per questa fase del ciclo di vita.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }

Aspettative in questa fase:

  • Il set di attività principale è su scala 0%

PRE_SCALE_UP

Questa fase si verifica prima che le nuove attività vengano ampliate. Di seguito viene illustrato un esempio di payload per questa fase del ciclo di vita.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Aspettative in questa fase:

  • Le attività di revisione dei servizi ecologici sono su scala 0%

POST_SCALE_UP

Questa fase si verifica dopo che le nuove attività sono state ampliate e sono state completate. Di seguito viene illustrato un esempio di payload per questa fase del ciclo di vita.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Aspettative in questa fase:

  • Le attività di revisione dei servizi ecologici sono al 100%

  • Le attività della revisione del servizio verde sono soddisfacenti

TEST_TRAFFIC_SHIFT

Questa fase si verifica quando il traffico di test viene spostato sulle attività di revisione del servizio verde.

Di seguito viene illustrato un esempio di payload per questa fase del ciclo di vita.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": {} }

Aspettative in questa fase:

  • Il traffico di prova si sta avviando verso le attività di revisione dei servizi ecologici.

POST_TEST_TRAFFIC_SHIFT

Questa fase si verifica dopo che il traffico di test è stato completamente spostato verso le nuove attività.

Di seguito viene illustrato un esempio di payload per questa fase del ciclo di vita.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Aspettative in questa fase:

  • Il 100% del traffico di test è stato indirizzato verso le attività di revisione dei servizi ecologici.

PRODUCTION_TRAFFIC_SHIFT

Questa fase si verifica quando il traffico di produzione viene spostato sulle attività di revisione dei servizi ecologici.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }

Aspettative in questa fase:

  • Il traffico di produzione sta passando alla revisione del servizio ecologico.

POST_PRODUCTION_TRAFFIC_SHIFT

Questa fase si verifica dopo che il traffico di produzione è stato completamente spostato sulle attività di revisione dei servizi ecologici.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

Aspettative in questa fase:

  • Il 100% del traffico di produzione è stato destinato alle attività di revisione dei servizi ecologici.

Categorie delle fasi del ciclo di vita

Le fasi del ciclo di vita si dividono in due categorie:

  1. Fasi di chiamata singole: queste fasi vengono richiamate una sola volta durante l'implementazione di un servizio:

    • PRE_SCALE_UP

    • POST_SCALE_UP

    • POST_TEST_TRAFFIC_SHIFT

    • POST_PRODUCTION_TRAFFIC_SHIFT

  2. Fasi di invocazione ricorrenti: queste fasi possono essere richiamate più volte durante l'implementazione di un servizio, ad esempio quando si verifica un'operazione di rollback:

    • TEST_TRAFFIC_SHIFT

    • PRODUCTION_TRAFFIC_SHIFT

Stato dell'implementazione durante gli agganci del ciclo di vita

Mentre i lifecycle hook sono in esecuzione, lo stato di implementazione sarà valido per tutte le fasi del ciclo di vita. IN_PROGRESS

Fase del ciclo di vita Stato di implementazione
RECONCILE_SERVICE IN_PROGRESS
PRE_SCALE_UP IN_PROGRESS
POST_SCALE_UP IN_PROGRESS
TEST_TRAFFIC_SHIFT IN_PROGRESS
POST_TEST_TRAFFIC_SHIFT IN_PROGRESS
PRODUCTION_TRAFFIC_SHIFT IN_PROGRESS
SPOSTAMENTO_DI_TRAFFICO_POST_PRODUZIONE IN_PROGRESS