Amazon ECS-Events - Amazon ECS

Amazon ECS-Events

Amazon ECS verfolgt den Status jeder Ihrer Aufgaben und Services. Wenn sich der Status einer Aufgabe oder eines Services ändert, wird ein Ereignis ausgelöst und an Amazon EventBridge gesendet. Diese Ereignisse werden als Aufgabenstatusänderungsereignisse und Service-Aktionsereignisse klassifiziert. Diese Ereignisse und ihre möglichen Ursachen werden in den folgenden Abschnitten genauer beschrieben.

Anmerkung

Amazon ECS fügt in Zukunft möglicherweise andere Ereignistypen, -quellen und -details hinzu. Wenn Sie JSON-Ereignisdaten programmgesteuert deserialisieren, vergewissern Sie sich, dass Ihre Anwendung unbekannte Eigenschaften verarbeiten kann, um Probleme zu vermeiden, falls diese zusätzlichen Eigenschaften hinzugefügt werden.

Containerstatus- und Aufgabenstatus-Änderungsereignisse enthalten zwei version-Felder: eines im Hauptteil des Ereignisses und eines im detail-Objekt des Ereignisses. Im Folgenden werden die Unterschiede zwischen diesen beiden Feldern beschrieben:

  • Das Feld version im Haupttext des Ereignisses ist für alle Ereignisse auf 0 gesetzt. Weitere Informationen über EventBridge-Parameter finden Sie unter Ereignisse und Ereignismuster im Amazon EventBridge-Benutzerhandbuch.

  • Das version-Feld im detail-Objekt des Ereignisses beschreibt die Version der zugehörigen Ressource. Jedes Mal, wenn sich der Status einer Ressource ändert, erhöht sich diese Versionsnummer. Da Ereignisse mehrfach gesendet werden können, können Sie mit diesem Feld doppelte Ereignisse identifizieren. Doppelte Ereignisse haben im detail-Objekt die gleiche Version. Wenn Sie Ihre den Aufgabenstatus mit EventBridge replizieren, können Sie die Version einer von Amazon ECS-APIs gemeldeten Ressource mit der in EventBridge gemeldeten Version für die Ressource (innerhalb des detail-Objekts) vergleichen, um zu überprüfen, ob die Version in Ihrem Ereignis-Stream aktuell ist.

Service-Aktionsereignisse enthalten nur das Feld version im Hauptteil.

Änderungsereignisse des Aufgabenstatus

Die folgenden Szenarien lösen Änderungsereignisse des Aufgabenstatus aus:

Sie rufen die API-Operationen StartTask, RunTask oder StopTask entweder direkt oder mit der AWS Management Console, AWS CLI oder den SDKs auf.

Das Starten oder Stoppen von Aufgaben erstellt neue Aufgabenressourcen oder ändert den Status bestehender Aufgabenressourcen.

Der Amazon-ECS-Service-Scheduler startet oder beendet eine Aufgabe.

Das Starten oder Stoppen von Aufgaben erstellt neue Aufgabenressourcen oder ändert den Status bestehender Aufgabenressourcen.

Der Amazon ECS-Containeragent ruft die SubmitTaskStateChange-API-Operation auf.

Der Amazon ECS-Containeragent überwacht den Status Ihrer Aufgaben und meldet alle Statusänderungen. Statusänderungen können Änderungen von PENDING auf RUNNING oder von RUNNING auf STOPPED beinhalten.

Ein Container in der Aufgabe ändert den Status.

Der Amazon ECS-Container-Agent überwacht den Status der Container innerhalb von Aufgaben. Wenn beispielsweise ein Container stoppt, der innerhalb einer Aufgabe ausgeführt wird, löst diese Containerstatusänderung ein Ereignis aus.

Eine Aufgabe, die den Fargate Spot-Kapazitätsanbieter nutzt, erhält eine Beendigungsankündigung.

Wenn eine Aufgabe den FARGATE_SPOT-Kapazitätsanbieter nutzt und aufgrund einer Spot-Unterbrechung gestoppt wird, wird ein Ereignis zur Änderung des Aufgabenstatus ausgelöst.

Beispiel Änderungsereignis des Aufgabenstatus

Aufgabenstatusänderungsereignisse werden im folgenden Format bereitgestellt. Der folgende Abschnitt detail ähnelt dem Objekt Task, das von einer DescribeContainerInstances-API-Operation in der Amazon Elastic Container Service API Reference zurückgegeben wird. Wenn Ihre Container ein mit Amazon ECR gehostetes Image verwenden, wird das Feld imageDigest zurückgegeben.

Anmerkung

Die Werte für die Felder createdAt, connectivityAt, pullStartedAt, startedAt, pullStoppedAt und updatedAt sind in der Antwort einer DescribeTasks-Aktion UNIX-Zeitstempel. Im Aufgabenstatus-Änderungsereignis sind sie jedoch ISO-Zeichenfolgenzeitstempel.

Weitere Informationen über CloudWatch Events-Parameter finden Sie unter Ereignisse und Ereignismuster im Amazon EventBridge-Benutzerhandbuch.

{ "version": "0", "id": "3317b2af-7005-947d-b652-f55e762e571a", "detail-type": "ECS Task State Change", "source": "aws.ecs", "account": "111122223333", "time": "2020-01-23T17:57:58Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:task/FargateCluster/c13b4cb40f1f4fe4a2971f76ae5a47ad" ], "detail": { "attachments": [ { "id": "1789bcae-ddfb-4d10-8ebe-8ac87ddba5b8", "type": "eni", "status": "ATTACHED", "details": [ { "name": "subnetId", "value": "subnet-abcd1234" }, { "name": "networkInterfaceId", "value": "eni-abcd1234" }, { "name": "macAddress", "value": "0a:98:eb:a7:29:ba" }, { "name": "privateIPv4Address", "value": "10.0.0.139" } ] } ], "availabilityZone": "us-west-2c", "clusterArn": "arn:aws:ecs:us-west-2:111122223333:cluster/FargateCluster", "containers": [ { "containerArn": "arn:aws:ecs:us-west-2:111122223333:container/cf159fd6-3e3f-4a9e-84f9-66cbe726af01", "lastStatus": "RUNNING", "name": "FargateApp", "image": "111122223333.dkr.ecr.us-west-2.amazonaws.com/hello-repository:latest", "imageDigest": "sha256:74b2c688c700ec95a93e478cdb959737c148df3fbf5ea706abe0318726e885e6", "runtimeId": "ad64cbc71c7fb31c55507ec24c9f77947132b03d48d9961115cf24f3b7307e1e", "taskArn": "arn:aws:ecs:us-west-2:111122223333:task/FargateCluster/c13b4cb40f1f4fe4a2971f76ae5a47ad", "networkInterfaces": [ { "attachmentId": "1789bcae-ddfb-4d10-8ebe-8ac87ddba5b8", "privateIpv4Address": "10.0.0.139" } ], "cpu": "0" } ], "createdAt": "2020-01-23T17:57:34.402Z", "launchType": "FARGATE", "cpu": "256", "memory": "512", "desiredStatus": "RUNNING", "group": "family:sample-fargate", "lastStatus": "RUNNING", "overrides": { "containerOverrides": [ { "name": "FargateApp" } ] }, "connectivity": "CONNECTED", "connectivityAt": "2020-01-23T17:57:38.453Z", "pullStartedAt": "2020-01-23T17:57:52.103Z", "startedAt": "2020-01-23T17:57:58.103Z", "pullStoppedAt": "2020-01-23T17:57:55.103Z", "updatedAt": "2020-01-23T17:57:58.103Z", "taskArn": "arn:aws:ecs:us-west-2:111122223333:task/FargateCluster/c13b4cb40f1f4fe4a2971f76ae5a47ad", "taskDefinitionArn": "arn:aws:ecs:us-west-2:111122223333:task-definition/sample-fargate:1", "version": 4, "platformVersion": "1.3.0" } }

Service-Aktionsereignisse

Amazon ECS sendet Service-Aktionsereignisse mit dem Detailtyp ECS Service Action (ECS-Service-Aktion). Im Gegensatz zu den Container-Instance- und Aufgabenstatus-Änderungsereignissen enthalten die Ereignisse der Service-Aktion keine Versionsnummer im details-Antwortfeld. Es folgt ein Ereignismuster, mit dem eine EventBridge-Regel für Amazon-ECS-Service-Aktionsereignisse erstellt wird. Weitere Informationen finden Sie unter Erstellen einer EventBridge-Regel im Amazon EventBridge-Benutzerhandbuch.

{ "source": [ "aws.ecs" ], "detail-type": [ "ECS Service Action" ] }

Amazon ECS sendet Ereignisse mit den Ereignistypen INFO, WARN und ERROR. Im Folgenden finden Sie die Ereignisse der Service-Aktion.

Service-Aktionsereignisse mit INFO-Ereignistyp

SERVICE_STEADY_STATE

Der Service befindet sich in einem korrekten Status und umfasst die gewünschte Anzahl von Aufgaben. Somit erreicht er einen stabilen Status. Der Service-Scheduler meldet den Status regelmäßig, sodass Sie diese Nachricht möglicherweise mehrmals erhalten.

TASKSET_STEADY_STATE

Der Aufgabensatz ist gesund und in der gewünschten Anzahl von Aufgaben und erreicht so einen Steady-Status.

CAPACITY_PROVIDER_STEADY_STATE

Ein Kapazitätsanbieter, der einem Service zugeordnet ist, erreicht einen Steady-Status.

SERVICE_DESIRED_COUNT_UPDATED

Wenn der Service-Scheduler die berechnete gewünschte Anzahl für einen Service oder einen Aufgabensatz aktualisiert. Dieses Ereignis wird nicht gesendet, wenn die gewünschte Anzahl manuell von einem Benutzer aktualisiert wird.

Service-Aktionsereignisse mit WARN-Ereignistyp

SERVICE_TASK_START_IMPAIRED

Der Service kann Aufgaben nicht konsistent und erfolgreich starten.

SERVICE_DISCOVERY_INSTANCE_UNHEALTHY

Ein Service, der die Service-Erkennung verwendet, enthält eine fehlerhafte Aufgabe. Der Service-Scheduler erkennt, dass eine Aufgabe innerhalb einer Service-Registrierung ungesund ist.

Service-Aktionsereignisse mit ERROR-Ereignistyp

SERVICE_DAEMON_PLACEMENT_CONSTRAINT_VIOLATED

Eine Aufgabe in einem Service, der die DAEMON-Service-Scheduler-Strategie verwendet, entspricht nicht mehr der Platzierungsbeschränkungsstrategie für den Service.

ECS_OPERATION_THROTTLED

Der Service-Scheduler wurde aufgrund der Amazon ECS-API-Drosselgrenzen gedrosselt.

SERVICE_DISCOVERY_OPERATION_THROTTLED

Der Service-Scheduler wurde aufgrund der AWS Cloud Map API-Drosselgrenzen gedrosselt. Dies kann bei Services auftreten, die für die Verwendung der Service-Erkennung konfiguriert sind.

SERVICE_TASK_PLACEMENT_FAILURE

Der Service-Scheduler kann keinen Task platzieren. Die Ursache wird im Feld reason beschrieben.

Eine typische Ursache für die Auslösung dieses Service-Ereignisses ist ein Mangel an Ressourcen in dem Cluster, in dem die Aufgabe platziert werden soll. Beispiele sind unzureichende CPU- oder Speicherkapazität in den verfügbaren Container-Instances oder die Tatsache, dass keine Container-Instances verfügbar sind. Eine weitere typische Ursache besteht darin, dass der Amazon ECS-Container-Agent in der Container-Instance getrennt wird, sodass der Scheduler die Aufgabe nicht platzieren kann.

SERVICE_TASK_CONFIGURATION_FAILURE

Der Service-Scheduler kann aufgrund eines Konfigurationsfehlers keine Aufgabe platzieren. Die Ursache wird im Feld reason beschrieben.

Eine typische Ursache für das Auslösen dieses Service-Ereignisses sind Tags, die auf den Service angewendet wurden, obwohl der Benutzer oder die Rolle sich nicht für das neue Amazon-Ressourcennamensformat (ARN-Format) in der Region entschieden hat. Weitere Informationen finden Sie unter Amazon Ressourcennamen (ARNs) und IDs. Eine weitere typische Ursache besteht darin, dass Amazon ECS die bereitgestellte IAM-Aufgabenrolle nicht annehmen konnte.

Beispiel Service-Steady-Statusereignis

Service-Steady-Statusereignisse werden im folgenden Format bereitgestellt. Weitere Informationen über EventBridge-Parameter finden Sie unter Ereignisse und Ereignismuster im Amazon EventBridge-Benutzerhandbuch.

{ "version": "0", "id": "af3c496d-f4a8-65d1-70f4-a69d52e9b584", "detail-type": "ECS Service Action", "source": "aws.ecs", "account": "111122223333", "time": "2019-11-19T19:27:22Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:service/default/servicetest" ], "detail": { "eventType": "INFO", "eventName": "SERVICE_STEADY_STATE", "clusterArn": "arn:aws:ecs:us-west-2:111122223333:cluster/default", "createdAt": "2019-11-19T19:27:22.695Z" } }

Beispiel Kapazitätsanbieter-Steady-Statusereignis

Die Steady-Statusereignisse des Kapazitätsanbieters werden im folgenden Format bereitgestellt.

{ "version": "0", "id": "b9baa007-2f33-0eb1-5760-0d02a572d81f", "detail-type": "ECS Service Action", "source": "aws.ecs", "account": "111122223333", "time": "2019-11-19T19:37:00Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:service/default/servicetest" ], "detail": { "eventType": "INFO", "eventName": "CAPACITY_PROVIDER_STEADY_STATE", "clusterArn": "arn:aws:ecs:us-west-2:111122223333:cluster/default", "capacityProviderArns": [ "arn:aws:ecs:us-west-2:111122223333:capacity-provider/ASG-tutorial-capacity-provider" ], "createdAt": "2019-11-19T19:37:00.807Z" } }

Beispiel Service-Aufgabenstart-Gefährdet-Ereignis

Service-Aufgabenstart-Gefährdet-Ereignisse werden im folgenden Format bereitgestellt.

{ "version": "0", "id": "57c9506e-9d21-294c-d2fe-e8738da7e67d", "detail-type": "ECS Service Action", "source": "aws.ecs", "account": "111122223333", "time": "2019-11-19T19:55:38Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:service/default/servicetest" ], "detail": { "eventType": "WARN", "eventName": "SERVICE_TASK_START_IMPAIRED", "clusterArn": "arn:aws:ecs:us-west-2:111122223333:cluster/default", "createdAt": "2019-11-19T19:55:38.725Z" } }

Beispiel Service-Aufgabenplazierung-Fehlerereignis

Fehlerereignisse bei der Platzierung von Service-Aufgaben werden im folgenden Format bereitgestellt. Weitere Informationen über EventBridge-Parameter finden Sie unter Ereignisse und Ereignismuster im Amazon EventBridge-Benutzerhandbuch.

Im folgenden Beispiel versuchte die Aufgabe, den FARGATE_SPOT-Kapazitätsanbieter zu verwenden, aber der Service-Scheduler konnte keine Fargate Spot-Kapazität akquirieren.

{ "version": "0", "id": "ddca6449-b258-46c0-8653-e0e3a6d0468b", "detail-type": "ECS Service Action", "source": "aws.ecs", "account": "111122223333", "time": "2019-11-19T19:55:38Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:service/default/servicetest" ], "detail": { "eventType": "ERROR", "eventName": "SERVICE_TASK_PLACEMENT_FAILURE", "clusterArn": "arn:aws:ecs:us-west-2:111122223333:cluster/default", "capacityProviderArns": [ "arn:aws:ecs:us-west-2:111122223333:capacity-provider/FARGATE_SPOT" ], "reason": "RESOURCE:FARGATE", "createdAt": "2019-11-06T19:09:33.087Z" } }

Im folgenden Beispiel für den EC2-Launchtyp wurde versucht, die Aufgabe auf der Container-Instance 2dd1b186f39845a584488d2ef155c131 zu launchen, aber der Service-Scheduler konnte die Aufgabe wegen unzureichender CPU nicht platzieren.

{ "version": "0", "id": "ddca6449-b258-46c0-8653-e0e3a6d0468b", "detail-type": "ECS Service Action", "source": "aws.ecs", "account": "111122223333", "time": "2019-11-19T19:55:38Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:service/default/servicetest" ], "detail": { "eventType": "ERROR", "eventName": "SERVICE_TASK_PLACEMENT_FAILURE", "clusterArn": "arn:aws:ecs:us-west-2:111122223333:cluster/default", "containerInstanceArns": [ "arn:aws:ecs:us-west-2:111122223333:container-instance/default/2dd1b186f39845a584488d2ef155c131" ], "reason": "RESOURCE:CPU", "createdAt": "2019-11-06T19:09:33.087Z" } }

Änderungen des Zustands bei der Servicebereitstellung

Amazon ECS sendet Änderungsereignisse für die Servicebereitstellung mit dem Detailtyp Statusänderungen des ECS-Bereitstellungszustands. Im Folgenden finden Sie ein Ereignismuster, das zum Erstellen einer EventBridge-Regel für Amazon ECS-Servicebereitstellung-Änderungsereignisse verwendet wird. Weitere Informationen finden Sie unter Erstellen einer EventBridge-Regel im Amazon EventBridge-Benutzerhandbuch.

{ "source": [ "aws.ecs" ], "detail-type": [ "ECS Deployment State Change" ] }

Amazon ECS sendet Ereignisse mit den Ereignistypen INFO und ERROR. Folgende sind die Änderungsereignisse für den Bereitstellungsstatus von Services:

SERVICE_DEPLOYMENT_IN_PROGRESS

Die Dienstbereitstellung ist in Bearbeitung. Dieses Ereignis wird sowohl für Erstbereitstellungen als auch für Rollbackbereitstellungen gesendet.

SERVICE_DEPLOYMENT_COMPLETED

Die Dienstbereitstellung ist abgeschlossen. Dieses Ereignis wird gesendet, sobald ein Service einen Steady-Status nach einer Bereitstellung erreicht.

SERVICE_DEPLOYMENT_FAILED

Die Dienstbereitstellung ist fehlgeschlagen. Dieses Ereignis wird für Dienste gesendet, bei denen die Logik des Bereitstellungsschutzschalters aktiviert ist.

Beispiel Ereignis „Dienstbereitstellung in Bearbeitung“

Ereignisse zur Servicebereitstellung werden bereitgestellt, wenn sowohl eine anfängliche als auch eine Rollbackbereitstellung gestartet wird. Der Unterschied zwischen den beiden liegt im Feld reason. Weitere Informationen über EventBridge-Parameter finden Sie unter Ereignisse und Ereignismuster im Amazon EventBridge-Benutzerhandbuch.

Im Folgenden sehen Sie eine Beispielausgabe für eine erste Bereitstellung, die gestartet wird.

{ "version": "0", "id": "ddca6449-b258-46c0-8653-e0e3a6EXAMPLE", "detail-type": "ECS Deployment State Change", "source": "aws.ecs", "account": "111122223333", "time": "2020-05-23T12:31:14Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:service/default/servicetest" ], "detail": { "eventType": "INFO", "eventName": "SERVICE_DEPLOYMENT_IN_PROGRESS", "deploymentId": "ecs-svc/123", "updatedAt": "2020-05-23T11:11:11Z", "reason": "ECS deployment deploymentId in progress." } }

Im Folgenden sehen Sie eine Beispielausgabe für eine Rollbackbereitstellung, die gestartet wird. Das Feld reason enthält die ID der Bereitstellung, auf die der Service zurückgesetzt wird.

{ "version": "0", "id": "ddca6449-b258-46c0-8653-e0e3aEXAMPLE", "detail-type": "ECS Deployment State Change", "source": "aws.ecs", "account": "111122223333", "time": "2020-05-23T12:31:14Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:service/default/servicetest" ], "detail": { "eventType": "INFO", "eventName": "SERVICE_DEPLOYMENT_IN_PROGRESS", "deploymentId": "ecs-svc/123", "updatedAt": "2020-05-23T11:11:11Z", "reason": "ECS deployment circuit breaker: rolling back to deploymentId deploymentID." } }

Beispiel Ereignis „Dienstbereitstellung abgeschlossen“

„Dienstbereitstellung abgeschlossen“-Statusereignisse werden im folgenden Format bereitgestellt. Weitere Informationen finden Sie unter Laufende Aktualisierung.

{ "version": "0", "id": "ddca6449-b258-46c0-8653-e0e3aEXAMPLE", "detail-type": "ECS Deployment State Change", "source": "aws.ecs", "account": "111122223333", "time": "2020-05-23T12:31:14Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:service/default/servicetest" ], "detail": { "eventType": "INFO", "eventName": "SERVICE_DEPLOYMENT_COMPLETED", "deploymentId": "ecs-svc/123", "updatedAt": "2020-05-23T11:11:11Z", "reason": "ECS deployment deploymentID completed." } }

Beispiel Ereignis „Dienstbereitstellung ist fehlgeschlagen“

„Dienstbereitstellung fehlgeschlagen“-Statusereignisse werden im folgenden Format bereitgestellt. Ein Dienstbereitstellungsstatusereignis wird nur für Dienste gesendet, für die die Logik des Bereitstellungsschutzschalters aktiviert ist. Weitere Informationen finden Sie unter Laufende Aktualisierung.

{ "version": "0", "id": "ddca6449-b258-46c0-8653-e0e3aEXAMPLE", "detail-type": "ECS Deployment State Change", "source": "aws.ecs", "account": "111122223333", "time": "2020-05-23T12:31:14Z", "region": "us-west-2", "resources": [ "arn:aws:ecs:us-west-2:111122223333:service/default/servicetest" ], "detail": { "eventType": "ERROR", "eventName": "SERVICE_DEPLOYMENT_FAILED", "deploymentId": "ecs-svc/123", "updatedAt": "2020-05-23T11:11:11Z", "reason": "ECS deployment circuit breaker: task failed to start." } }