Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Lebenszyklus-Hooks für Amazon-ECS-Servicebereitstellungen
Wenn eine Bereitstellung beginnt, durchläuft sie Lebenszyklusphasen. Jede Phase kann sich in einem Zustand wie IN_PROGRESS oder SUCCEEDED befinden. Sie können Lebenszyklus-Hooks verwenden. Dabei handelt es sich um Lambda-Funktionen, die Amazon ECS in Ihrem Namen in bestimmten Lebenszyklusphasen ausführt. Jeder Aufruf enthält eine JSON-Nutzlast mit Informationen zum aktuellen Status der Bereitstellung.
Lebenszyklus-Hooks
Lifecycle-Hooks sind Lambda-Funktionen, die Amazon ECS in bestimmten Phasen einer Bereitstellung aufruft. Sie können Hooks verwenden, um Validierungstests durchzuführen, Governance-Richtlinien durchzusetzen oder manuelle Genehmigungsschritte zu implementieren, bevor die Bereitstellung fortgesetzt wird.
Wenn Amazon ECS Ihren Hook aufruft, muss Ihre Funktion ein JSON-Objekt zurückgeben, das ein hookStatus Feld enthält. Sie können dies optional einbeziehencallBackDelay, um das Timing von Wiederholungsversuchen zu steuern und Daten zwischen Aufrufen hookDetails zu übergeben. Wenn Ihre Funktion kein hookStatus gültiges Ergebnis zurückgibt oder wenn sie fehlschlägt, macht Amazon ECS die Bereitstellung rückgängig.
HookStatus-Werte
Die folgenden hookStatus Werte sind gültig:
-
SUCCEEDED— Die Bereitstellung wird bis zur nächsten Lebenszyklusphase fortgesetzt. -
FAILED— Amazon ECS setzt die Bereitstellung auf die letzte erfolgreiche Service-Revision zurück. -
IN_PROGRESS— Amazon ECS ruft die Funktion nach einer Verzögerung erneut auf. Standardmäßig beträgt die Verzögerung 30 Sekunden. Sie können diesen Wert anpassen, indem SiecallBackDelayneben dem ein zurückgebenhookStatus.
Das folgende Beispiel zeigt, wie ein hookStatus mit einer benutzerdefinierten Callback-Verzögerung zurückgegeben wird. In diesem Beispiel wiederholt Amazon ECS den Hook nach 60 Sekunden statt nach den standardmäßigen 30 Sekunden:
{ "hookStatus": "IN_PROGRESS", "callBackDelay": 60 }
Status wird mit HookDetails übergeben
Das hookDetails Feld ist ein Wörterbuch, mit dem Sie Daten an Ihre Lifecycle-Hook-Funktion übergeben können. Es gibt zwei Möglichkeiten zum AuffüllenhookDetails:
-
Bei der Erstellung oder Aktualisierung des Dienstes — Definieren Sie
hookDetailsin der Lifecycle-Hook-Konfiguration in Ihrer Service-Definition. Amazon ECS leitet diese Daten bei jedem Aufruf an Ihre Funktion weiter. Verwenden Sie dies, um Ihre Hooks für mehrere Dienste wiederverwendbar zu machen, indem Sie eine dienstspezifische Konfiguration übergeben. -
Zur Laufzeit über IN_PROGRESS-Antworten — Rückgabe
hookDetailszusammen mit demIN_PROGRESSHook-Status. Amazon ECS gibt diese Daten beim nächsten Aufruf an Ihre Funktion zurück. Verwenden Sie dies, um den Status zwischen Aufrufen ohne externen Speicher aufrechtzuerhalten.
Das folgende Beispiel zeigt eine Lifecycle-Hook-Konfiguration in einer Servicedefinition, die der Funktion einen S3-Bucket-Namen übergibt:
{ "hookTargetArn": "arn:aws:lambda:us-west-2:123456789012:function:my-approval-hook", "roleArn": "arn:aws:iam::123456789012:role/ecs-lambda-invoke-role", "lifecycleStages": [ "POST_TEST_TRAFFIC_SHIFT" ], "hookDetails": { "S3_BUCKET_NAME": "my-approval-bucket" } }
Wenn Ihre Funktion zurückkehrtIN_PROGRESS, können Sie sie auch hookDetails in die Antwort einbeziehen. Amazon ECS führt diese Daten zusammen und gibt sie beim nächsten Aufruf zurück. Zu den häufigsten Anwendungsfällen gehört die Weitergabe von Metrikzählern oder ARNs externer Ressourcen zwischen Aufrufen.
{ "hookStatus": "IN_PROGRESS", "callBackDelay": 30, "hookDetails": { "approvalChecked": true, "S3_BUCKET_NAME": "my-approval-bucket" } }
Beim nächsten Aufruf schließt Amazon ECS die hookDetails Nutzlast für das Ereignis zusammen mit: executionDetails
{ "executionId": "e8d5a28f-eb01-4f3c-9454-a30ba6dc54bc", "lifecycleStage": "POST_TEST_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} }, "hookDetails": { "approvalChecked": true, "S3_BUCKET_NAME": "my-approval-bucket" } }
Ihre Funktion kann lesenevent["hookDetails"], um auf die Konfiguration und den Status früherer Aufrufe zuzugreifen.
Anmerkung
Daten, die zur hookDetails Laufzeit hinzugefügt wurden, bleiben nur zwischen Aufrufen desselben Hooks innerhalb einer einzelnen Bereitstellung erhalten. Daten werden nicht zwischen verschiedenen Hooks innerhalb derselben Bereitstellung oder demselben Hook in verschiedenen Bereitstellungen übertragen.
Kategorien von Lebenszyklusphasen
Lebenszyklusphasen gliedern sich in zwei Kategorien:
-
Einzelne Aufrufphasen — Amazon ECS ruft diese Phasen während einer Servicebereitstellung nur einmal auf:
RECONCILE_SERVICEPRE_SCALE_UPPOST_SCALE_UPPOST_TEST_TRAFFIC_SHIFTPOST_PRODUCTION_TRAFFIC_SHIFT
-
Wiederkehrende Aufrufphasen — Amazon ECS kann diese Phasen während einer Servicebereitstellung mehrmals aufrufen, auch während eines Rollbacks:
TEST_TRAFFIC_SHIFTPRODUCTION_TRAFFIC_SHIFT
Lebenszyklus-Nutzdaten
Gängige Nutzdatenstruktur
Wenn Amazon ECS Ihre Lifecycle-Hook-Lambda-Funktion aufruft, enthält die Ereignisnutzlast die folgenden Felder der obersten Ebene:
-
executionId— Die eindeutige Kennung für diese Hook-Ausführung. -
lifecycleStage— Die aktuelle Lebenszyklusphase (zum BeispielPRODUCTION_TRAFFIC_SHIFT). -
resourceArn— Der ARN der Ressource, die mit der Bereitstellung verknüpft ist. -
executionDetails— Ein Objekt, das die in der folgenden Liste beschriebenen bereitstellungsspezifischen Informationen enthält.
Das executionDetails-Objekt enthält die folgenden Felder:
-
serviceArn— Der Amazon-Ressourcenname (ARN) des Dienstes. -
targetServiceRevisionArn— Der ARN der Zieldienstrevision, die bereitgestellt wird. -
testTrafficWeights— Eine Zuordnung der ARNs der Service-Revision zu den entsprechenden prozentualen Gewichtsanteilen für den Testverkehr. -
productionTrafficWeights— Eine Zuordnung der ARNs der Service-Revision zu ihren entsprechenden prozentualen Gewichtsanteilen für den Produktionsverkehr.
Das folgende Beispiel zeigt die vollständige Ereignisstruktur, die Ihre Lambda-Funktion empfängt:
{ "executionId": "f4fcae0f-9bec-41c6-ba87-0eaa0cef8af5", "lifecycleStage": "PRODUCTION_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900": 100, "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/1920498462936580504": 0 } } }
Lebenszyklusphasen-Nutzdaten
Die folgenden Abschnitte zeigen Beispiel-Payloads für jede Lebenszyklusphase. In diesen Beispielen ist die grüne Service-Revision (9313423515462893900) die neue Revision, die bereitgestellt wird, und die blaue Service-Revision (1920498462936580504) ist die bestehende Produktionsrevision.
PRE_SCALE_UP
Diese Phase findet statt, bevor Amazon ECS die Revisionsaufgaben für den Green Service startet. Die Green Service-Revision wurde noch nicht gestartet, und es wird kein Datenverkehr dorthin weitergeleitet.
{ "executionId": "e8d5a28f-eb01-4f3c-9454-a30ba6dc54bc", "lifecycleStage": "PRE_SCALE_UP", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} } }
POST_SCALE_UP
Diese Phase tritt ein, nachdem Amazon ECS die Revisionsaufgaben für den Green Service gestartet hat und sie fehlerfrei sind. Die grünen Aufgaben werden ausgeführt, empfangen aber noch keinen Datenverkehr.
{ "executionId": "8b095b05-7bb0-4c56-a223-a3f61f4f9295", "lifecycleStage": "POST_SCALE_UP", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} } }
TEST_TRAFFIC_SHIFT
Diese Phase tritt ein, wenn Amazon ECS den Testdatenverkehr auf die Green Service-Version umstellt. Sie testTrafficWeights zeigen, dass die grüne Version 100% des Testverkehrs erhält, während die blaue Version 0% erhält. Der Produktionsdatenverkehr fließt weiterhin zur blauen Version.
{ "executionId": "779085de-ab47-42bc-84ad-41f9914a8643", "lifecycleStage": "TEST_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": { "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900": 100, "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/1920498462936580504": 0 }, "productionTrafficWeights": {} } }
POST_TEST_TRAFFIC_SHIFT
Diese Phase tritt ein, nachdem Amazon ECS die Testverkehrsverlagerung abgeschlossen hat. Die Green Service-Revision verarbeitet 100% des Testverkehrs.
{ "executionId": "3a0345ba-b029-404b-890d-7da2a4b266aa", "lifecycleStage": "POST_TEST_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} } }
PRODUCTION_TRAFFIC_SHIFT
Diese Phase tritt ein, wenn Amazon ECS den Produktionsverkehr auf die Green Service-Version umstellt. Sie productionTrafficWeights zeigen, dass die grüne Version 100% des Produktionsverkehrs erhält, während die blaue Version 0% erhält.
{ "executionId": "f4fcae0f-9bec-41c6-ba87-0eaa0cef8af5", "lifecycleStage": "PRODUCTION_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900": 100, "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/1920498462936580504": 0 } } }
POST_PRODUCTION_TRAFFIC_SHIFT
Diese Phase tritt ein, nachdem Amazon ECS die Verlagerung des Produktionsverkehrs abgeschlossen hat. Die Green Service-Revision kümmert sich jetzt um den gesamten Produktionsdatenverkehr.
{ "executionId": "5f40ed04-7e54-437d-b95d-98bc872fec49", "lifecycleStage": "POST_PRODUCTION_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": {} } }
Der Lebenszyklus wird beim Rollback unterbrochen
Es gibt keine spezielle ROLLBACK Lebenszyklusphase. Wenn ein Rollback stattfindet, ruft Amazon ECS Hooks erneut auf, die in den TEST_TRAFFIC_SHIFT Phasen PRODUCTION_TRAFFIC_SHIFT und (den Phasen des wiederkehrenden Aufrufs) registriert wurden. Während eines Rollbacks zeigen die Daten productionTrafficWeights in der Payload, dass der Verkehr wieder auf die blaue Version umgestellt wird.
Es targetServiceRevisionArn bleibt die grüne Version des ARN, weil sie immer noch das Ziel der ursprünglichen Bereitstellung ist, obwohl sich der Verkehr davon wegverlagert.
Das folgende Beispiel zeigt eine PRODUCTION_TRAFFIC_SHIFT Payload während eines Rollbacks. Beachten Sie, dass die blaue Version (1920498462936580504) jetzt 100% des Produktionsverkehrs erhält, während die grüne Version (9313423515462893900) 0% erhält:
{ "executionId": "70073435-cb99-457f-b900-6ee1dcad05ec", "lifecycleStage": "PRODUCTION_TRAFFIC_SHIFT", "resourceArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/my-cluster/my-service/EZe5RNVLH6PPzHXINuP28", "executionDetails": { "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/my-cluster/my-service", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/9313423515462893900": 0, "arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/1920498462936580504": 100 } } }
Um festzustellen, ob Ihr Hook während eines Rollbacks aufgerufen wird, aktivieren Sie das. productionTrafficWeights Wenn die targetServiceRevisionArn (grüne Revision) eine Gewichtung von 0% und die andere Revision eine Gewichtung von 100% hat, wird die Bereitstellung zurückgesetzt.