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.
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 auf0
gesetzt. Weitere Informationen über EventBridge-Parameter finden Sie unter Ereignisse und Ereignismuster im Amazon EventBridge-Benutzerhandbuch. -
Das
version
-Feld imdetail
-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 imdetail
-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 desdetail
-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
oderStopTask
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
aufRUNNING
oder vonRUNNING
aufSTOPPED
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.
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."
}
}