

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Otomatiskan tanggapan terhadap kesalahan Amazon ECS menggunakan EventBridge
<a name="cloudwatch_event_stream"></a>

Menggunakan Amazon EventBridge, Anda dapat mengotomatiskan AWS layanan Anda dan merespons secara otomatis peristiwa sistem seperti masalah ketersediaan aplikasi atau perubahan sumber daya. Acara dari AWS layanan dikirimkan ke EventBridge dalam waktu dekat. Anda dapat menuliskan aturan sederhana untuk menunjukkan peristiwa mana yang sesuai kepentingan Anda, dan tindakan otomatis yang diambil ketika suatu peristiwa sesuai dengan suatu aturan. Tindakan yang dapat dikonfigurasi secara otomatis untuk menyertakan yang berikut:
+ Menambahkan peristiwa ke grup log di CloudWatch Log
+ Memanggil fungsi AWS Lambda 
+ Meminta Perintah Amazon EC2 Run
+ Mengirim peristiwa ke Amazon Kinesis Data Streams
+ Mengaktifkan mesin AWS Step Functions negara
+ Memberitahu topik Amazon SNS atau antrian Amazon Simple Queue Service (Amazon SQS)

Untuk informasi selengkapnya, lihat [Memulai Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html) *di Panduan EventBridge Pengguna Amazon*.

Anda dapat menggunakan acara Amazon ECS EventBridge untuk menerima notifikasi mendekati waktu nyata mengenai status klaster Amazon ECS Anda saat ini. Jika tugas Anda menggunakan EC2, Anda dapat melihat status instance container dan status saat ini dari semua tugas yang berjalan pada instance container tersebut. Jika tugas Anda menggunakan Fargate, Anda dapat melihat status instance container.

Dengan menggunakan EventBridge, Anda dapat membuat penjadwal khusus di atas Amazon ECS yang bertanggung jawab untuk mengatur tugas di seluruh cluster dan memantau status cluster dalam waktu dekat. Anda dapat menghilangkan kode penjadwalan dan pemantauan yang terus-menerus melakukan polling layanan Amazon ECS untuk perubahan status dan sebagai gantinya menangani perubahan status Amazon ECS secara asinkron menggunakan target apa pun. EventBridge Target mungkin termasuk AWS Lambda, Layanan Antrian Sederhana Amazon, Layanan Pemberitahuan Sederhana Amazon, atau Amazon Kinesis Data Streams.

Aliran acara Amazon ECS memastikan bahwa setiap acara dikirimkan setidaknya satu kali. Jika peristiwa duplikat dikirim, peristiwa menyediakan informasi yang cukup untuk mengidentifikasi duplikat. Untuk informasi selengkapnya, lihat [Menangani acara Amazon ECS](ecs_cwet_handling.md).

Peristiwa relatif berurutan, sehingga Anda dapat dengan mudah memberitahu kapan suatu peristiwa terjadi dalam kaitannya dengan peristiwa lain.

**Topics**
+ [

# Peristiwa Amazon ECS
](ecs_cwe_events.md)
+ [

# Menangani acara Amazon ECS
](ecs_cwet_handling.md)

# Peristiwa Amazon ECS
<a name="ecs_cwe_events"></a>

Amazon ECS melacak status setiap tugas dan layanan Anda. Jika status tugas atau layanan berubah, peristiwa dibuat dan dikirim ke Amazon EventBridge. Peristiwa ini diklasifikasikan sebagai peristiwa perubahan status tugas dan peristiwa tindakan layanan. Peristiwa dan kemungkinan penyebabnya dijelaskan secara lebih detail di bagian berikut.

Amazon ECS menghasilkan dan mengirimkan jenis acara berikut ke EventBridge: 
+ Perubahan status instance kontainer
+ Perubahan status tugas
+ Perubahan status penerapan
+ Tindakan layanan

**catatan**  
Amazon ECS dapat menambahkan jenis, sumber, dan detail acara lainnya di masa mendatang. Jika Anda melakukan de-serialisasi data JSON peristiwa dalam kode, pastikan aplikasi Anda siap menangani properti yang tidak dikenal untuk menghindari masalah jika dan kapan properti tambahan ini ditambahkan.

Dalam beberapa kasus, beberapa peristiwa dihasilkan untuk aktivitas yang sama. Misalnya, ketika tugas dimulai pada instance kontainer, peristiwa perubahan status tugas dihasilkan untuk tugas baru. Peristiwa perubahan status instance container dihasilkan untuk memperhitungkan perubahan sumber daya yang tersedia, seperti CPU, memori, dan port yang tersedia, pada instance container. Demikian juga, jika instance kontainer dihentikan, peristiwa dihasilkan untuk instance kontainer, status koneksi agen kontainer, dan setiap tugas yang berjalan pada instance container.

Peristiwa perubahan status kontainer dan perubahan status tugas berisi dua bidang `version`: satu di bagian utama peristiwa, dan satu di objek `detail` peristiwa. Berikut ini menjelaskan perbedaan antara dua bidang tersebut:
+ Bidang `version` dalam bagian utama peristiwa diatur ke `0` pada semua peristiwa. Untuk informasi selengkapnya tentang EventBridge parameter, lihat [metadata peristiwa AWS layanan](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html) di * EventBridge Panduan Pengguna Amazon*.
+ Bidang `version` dalam objek `detail` peristiwa menggambarkan versi sumber daya terkait. Setiap kali sumber daya berubah status, versi ini bertambah. Karena peristiwa dapat dikirim beberapa kali, bidang ini mengizinkan Anda untuk mengidentifikasi peristiwa duplikat. Peristiwa duplikat memiliki versi yang sama di objek `detail`. Jika Anda mereplikasi instans penampung Amazon ECS dan status tugas dengan EventBridge, Anda dapat membandingkan versi sumber daya yang dilaporkan oleh Amazon ECS APIs dengan versi yang dilaporkan EventBridge untuk sumber daya (di dalam `detail` objek) untuk memverifikasi bahwa versi dalam aliran peristiwa Anda saat ini.

Peristiwa tindakan layanan hanya berisi bidang `version` dalam bagian utama.

Acara tindakan layanan menentukan layanan dalam 2 bidang berbeda:
+ Untuk acara yang dihasilkan oleh`create-service`, layanan ada di `serviceName` lapangan.
+ Untuk acara yang dihasilkan oleh`update-service`, layanan ada di `service` lapangan.

Jika Anda menggunakan perkakas otomatis untuk acara layanan, Anda perlu membuat kode untuk kedua bidang.

Untuk informasi tentang cara membuat aturan untuk peristiwa tindakan layanan, lihat[Acara tindakan layanan Amazon ECS](ecs_service_events.md).

Untuk informasi tambahan tentang cara mengintegrasikan Amazon ECS dan EventBridge, lihat [Mengintegrasikan Amazon dan EventBridge Amazon](https://aws.amazon.com/blogs/compute/integrating-amazon-eventbridge-and-amazon-ecs/) ECS.

# Acara perubahan status instans penampung Amazon ECS
<a name="ecs_container_instance_events"></a>

Skenario berikut menyebabkan peristiwa perubahan status instance container:

Anda memanggil`StartTask`,`RunTask`, atau operasi `StopTask` API, baik secara langsung atau dengan Konsol Manajemen AWS atau SDKs.  
Menempatkan atau menghentikan tugas pada instans kontainer memodifikasi sumber daya yang tersedia pada instans kontainer, seperti CPU, memori, dan port yang tersedia.

Penjadwal layanan Amazon ECS memulai atau menghentikan tugas.  
Menempatkan atau menghentikan tugas pada instans kontainer memodifikasi sumber daya yang tersedia pada instans kontainer, seperti CPU, memori, dan port yang tersedia.

Agen penampung Amazon ECS memanggil operasi `SubmitTaskStateChange` API dengan `STOPPED` status untuk tugas dengan status yang diinginkan. `RUNNING`  
Agen penampung Amazon ECS memantau status tugas pada instans penampung Anda, dan ia melaporkan perubahan status apa pun. Jika tugas yang seharusnya `RUNNING` dialihkan ke `STOPPED`, maka agen merilis sumber daya yang dialokasikan ke tugas yang berhenti, seperti CPU, memori, dan port yang tersedia.

Anda membatalkan pendaftaran instance container dengan operasi `DeregisterContainerInstance` API, baik secara langsung atau dengan atau. Konsol Manajemen AWS SDKs  
Membatalkan pendaftaran instance container mengubah status instance container dan status koneksi agen container Amazon ECS.

Tugas dihentikan ketika instans EC2 berhenti.   
Ketika Anda menghentikan instans kontainer, tugas yang berjalan di dalamnya dialihkan ke status `STOPPED`.

Agen kontainer Amazon ECS mendaftarkan instance kontainer untuk pertama kalinya.   
Pertama kali agen penampung Amazon ECS mendaftarkan instance kontainer (saat peluncuran atau saat pertama kali dijalankan secara manual), ini membuat peristiwa perubahan status untuk instance tersebut.

Agen kontainer Amazon ECS menghubungkan atau memutuskan sambungan dari Amazon ECS.  
Saat agen penampung Amazon ECS menghubungkan atau memutuskan sambungan dari backend Amazon ECS, agen penampung akan mengubah `agentConnected` status instans penampung.  
Agen kontainer Amazon ECS terputus dan menyambung kembali beberapa kali per jam sebagai bagian dari operasi normalnya, sehingga peristiwa koneksi agen harus diharapkan. Peristiwa ini bukan merupakan indikasi bahwa terdapat masalah dengan agen kontainer atau instans kontainer Anda.

Anda memutakhirkan agen penampung Amazon ECS pada sebuah instans.  
Detail instans kontainer berisi objek untuk versi agen kontainer. Jika Anda meningkatkan agen, informasi versi ini berubah dan menghasilkan acara.

**Example Peristiwa perubahan status instans kontainer**  
Peristiwa perubahan status instans kontainer disampaikan dalam format berikut. `detail`Bagian di bawah ini menyerupai [ContainerInstance](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerInstance.html)objek yang dikembalikan dari operasi [DescribeContainerInstances](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeContainerInstances.html)API di *Referensi API Amazon Elastic Container Service*. Untuk informasi selengkapnya tentang EventBridge parameter, lihat [metadata peristiwa AWS layanan](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html) di * EventBridge Panduan Pengguna Amazon*.  

```
{
  "version": "0",
  "id": "8952ba83-7be2-4ab5-9c32-6687532d15a2",
  "detail-type": "ECS Container Instance State Change",
  "source": "aws.ecs",
  "account": "111122223333",
  "time": "2016-12-06T16:41:06Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ecs:us-east-1:111122223333:container-instance/b54a2a04-046f-4331-9d74-3f6d7f6ca315"
  ],
  "detail": {
    "agentConnected": true,
    "attributes": [
      {
        "name": "com.amazonaws.ecs.capability.logging-driver.syslog"
      },
      {
        "name": "com.amazonaws.ecs.capability.task-iam-role-network-host"
      },
      {
        "name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
      },
      {
        "name": "com.amazonaws.ecs.capability.logging-driver.json-file"
      },
      {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.17"
      },
      {
        "name": "com.amazonaws.ecs.capability.privileged-container"
      },
      {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
      },
      {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
      },
      {
        "name": "com.amazonaws.ecs.capability.ecr-auth"
      },
      {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.20"
      },
      {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21"
      },
      {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.22"
      },
      {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.23"
      },
      {
        "name": "com.amazonaws.ecs.capability.task-iam-role"
      }
    ],
    "clusterArn": "arn:aws:ecs:us-east-1:111122223333:cluster/default",
    "containerInstanceArn": "arn:aws:ecs:us-east-1:111122223333:container-instance/b54a2a04-046f-4331-9d74-3f6d7f6ca315",
    "ec2InstanceId": "i-f3a8506b",
    "registeredResources": [
      {
        "name": "CPU",
        "type": "INTEGER",
        "integerValue": 2048
      },
      {
        "name": "MEMORY",
        "type": "INTEGER",
        "integerValue": 3767
      },
      {
        "name": "PORTS",
        "type": "STRINGSET",
        "stringSetValue": [
          "22",
          "2376",
          "2375",
          "51678",
          "51679"
        ]
      },
      {
        "name": "PORTS_UDP",
        "type": "STRINGSET",
        "stringSetValue": []
      }
    ],
    "remainingResources": [
      {
        "name": "CPU",
        "type": "INTEGER",
        "integerValue": 1988
      },
      {
        "name": "MEMORY",
        "type": "INTEGER",
        "integerValue": 767
      },
      {
        "name": "PORTS",
        "type": "STRINGSET",
        "stringSetValue": [
          "22",
          "2376",
          "2375",
          "51678",
          "51679"
        ]
      },
      {
        "name": "PORTS_UDP",
        "type": "STRINGSET",
        "stringSetValue": []
      }
    ],
    "status": "ACTIVE",
    "version": 14801,
    "versionInfo": {
      "agentHash": "aebcbca",
      "agentVersion": "1.13.0",
      "dockerVersion": "DockerVersion: 1.11.2"
    },
    "updatedAt": "2016-12-06T16:41:06.991Z"
  }
}
```

# Acara perubahan status tugas Amazon ECS
<a name="ecs_task_events"></a>

Skenario berikut menyebabkan peristiwa perubahan status tugas:

Anda memanggil`StartTask`,`RunTask`, atau operasi `StopTask` API, baik secara langsung atau dengan Konsol Manajemen AWS, AWS CLI, atau SDKs.  
Memulai atau menghentikan tugas membuat sumber daya tugas baru atau mengubah status sumber daya tugas yang ada.

Penjadwal layanan Amazon ECS memulai atau menghentikan tugas.  
Memulai atau menghentikan tugas membuat sumber daya tugas baru atau mengubah status sumber daya tugas yang ada.

Agen kontainer Amazon ECS memanggil operasi `SubmitTaskStateChange` API.  
Untuk EC2, agen penampung Amazon ECS memantau status tugas Anda pada instans penampung Anda. Agen kontainer Amazon ECS melaporkan perubahan status apa pun. Perubahan status dapat mencakup perubahan dari `PENDING` ke `RUNNING` atau dari `RUNNING` ke `STOPPED`.

Anda memaksa deregistrasi instance container yang mendasarinya dengan operasi `DeregisterContainerInstance` API dan `force` flag, baik secara langsung atau dengan atau. Konsol Manajemen AWS SDKs  
Membatalkan pendaftaran instance container mengubah status instance container dan status koneksi agen container Amazon ECS. Jika tugas berjalan di instans kontainer, bendera `force` harus diatur untuk mengizinkan pembatalan pendaftaran. Hal ini menghentikan semua tugas pada instans.

Instans kontainer yang mendasarinya dihentikan atau diakhiri.  
Saat Anda menghentikan instans kontainer, maka tugas yang berjalan di dalamnya dialihkan ke status `STOPPED`.

Kontainer dalam tugas mengubah status.  
Agen kontainer Amazon ECS memantau keadaan kontainer dalam tugas. Misalnya, jika kontainer yang berjalan dalam tugas berhenti, perubahan status kontainer ini menghasilkan peristiwa.

Tugas yang menggunakan penyedia kapasitas Fargate Spot menerima pemberitahuan penghentian.  
Saat tugas menggunakan penyedia `FARGATE_SPOT` kapasitas dan dihentikan karena gangguan Spot, peristiwa perubahan status tugas akan dihasilkan.

**Example Peristiwa perubahan status tugas**  
Peristiwa perubahan status tugas disampaikan dalam format berikut. Perhatikan hal berikut tentang bidang:  
+ Status kesehatan acara tidak tersedia dalam acara perubahan status tugas. Jika Anda memerlukan status kesehatan tugas, Anda dapat menjalankan tugas [deskripsikan.](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)
+ Saat kontainer Anda menggunakan gambar yang dihosting dengan Amazon ECR, `imageDigest` bidang akan dikembalikan.
+ Nilai untuk`createdAt`,,,`connectivityAt`, `pullStartedAt` `startedAt``pullStoppedAt`, dan `updatedAt` bidang adalah stempel waktu string ISO.
+ `detail-type`Nilainya adalah “Perubahan Status Tugas ECS”.
+ Ketika acara dibuat untuk tugas yang dihentikan, `stopCode` bidang `stoppedReason` dan memberikan informasi tambahan tentang mengapa tugas dihentikan (misalnya, “Pengguna dimulai”).
Untuk informasi selengkapnya tentang EventBridge parameter, lihat [metadata peristiwa AWS layanan di Referensi EventBridge ](https://docs.aws.amazon.com/eventbridge/latest/ref/events-structure.html) *Acara Amazon*.  
Untuk informasi tentang cara mengonfigurasi aturan EventBridge peristiwa Amazon yang hanya menangkap peristiwa tugas di mana tugas telah berhenti berjalan karena salah satu container pentingnya telah dihentikan, lihat [Mengirim peringatan Amazon Simple Notification Service untuk tugas Amazon ECS menghentikan peristiwa](ecs_cwet2.md)  

```
{
    "version": "0",
    "id": "105f6bb1-4da6-c630-4965-35383018cbca",
    "detail-type": "ECS Task State Change",
    "source": "aws.ecs",
    "account": "123456789012",
    "time": "2025-05-06T11:02:34Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ecs:us-east-1:123456789012:task/example-cluster/a1173316d40a45dea9"
    ],
    "detail": {
        "attachments": [
            {
                "id": "fe3a9a46-6a47-40ee-afd9-7952ae90a75a",
                "type": "eni",
                "status": "ATTACHED",
                "details": [
                    {
                        "name": "subnetId",
                        "value": "subnet-0d0eab1bb38d5ca64"
                    },
                    {
                        "name": "networkInterfaceId",
                        "value": "eni-0103a2f01bad57d71"
                    },
                    {
                        "name": "macAddress",
                        "value": "0e:50:d1:c1:77:81"
                    },
                    {
                        "name": "privateDnsName",
                        "value": "ip-10-0-1-163.ec2.internal"
                    },
                    {
                        "name": "privateIPv4Address",
                        "value": "10.0.1.163"
                    }
                ]
            }
        ],
        "attributes": [
            {
                "name": "ecs.cpu-architecture",
                "value": "x86_64"
            }
        ],
        "availabilityZone": "us-east-1b",
        "capacityProviderName": "FARGATE",
        "clusterArn": "arn:aws:ecs:us-east-1:123456789012:cluster/example-cluster",
        "connectivity": "CONNECTED",
        "connectivityAt": "2025-05-06T11:02:17.19Z",
        "containers": [
            {
                "containerArn": "arn:aws:ecs:us-east-1:123456789012:container/example-cluster/a1173316d40a45dea9/a0a99b87-baa8-4bf6-b9f1-a9a95917a635",
                "lastStatus": "RUNNING",
                "name": "web",
                "image": "nginx",
                "imageDigest": "sha256:c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66",
                "runtimeId": "a1173316d40a45dea9-0265927825",
                "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/example-cluster/a1173316d40a45dea9",
                "networkInterfaces": [
                    {
                        "attachmentId": "fe3a9a46-6a47-40ee-afd9-7952ae90a75a",
                        "privateIpv4Address": "10.0.1.163"
                    }
                ],
                "cpu": "99",
                "memory": "100"
            },
            {
                "containerArn": "arn:aws:ecs:us-east-1:123456789012:container/example-cluster/a1173316d40a45dea9/a2010e2d-ba7c-4135-8b79-e0290ff3cd8c",
                "lastStatus": "RUNNING",
                "name": "aws-guardduty-agent-nm40lC",
                "imageDigest": "sha256:bf9197abdf853607e5fa392b4f97ccdd6ca56dd179be3ce8849e552d96582ac8",
                "runtimeId": "a1173316d40a45dea9-2098416933",
                "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/example-cluster/a1173316d40a45dea9",
                "networkInterfaces": [
                    {
                        "attachmentId": "fe3a9a46-6a47-40ee-afd9-7952ae90a75a",
                        "privateIpv4Address": "10.0.1.163"
                    }
                ],
                "cpu": "null"
            },
            {
                "containerArn": "arn:aws:ecs:us-east-1:123456789012:container/example-cluster/a1173316d40a45dea9/dccf0ca2-d929-471f-a5c3-98006fd4379e",
                "lastStatus": "RUNNING",
                "name": "aws-otel-collector",
                "image": "public.ecr.aws/aws-observability/aws-otel-collector:v0.32.0",
                "imageDigest": "sha256:7a1b3560655071bcacd66902c20ebe9a69470d5691fe3bd36baace7c2f3c4640",
                "runtimeId": "a1173316d40a45dea9-4027662657",
                "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/example-cluster/a1173316d40a45dea9",
                "networkInterfaces": [
                    {
                        "attachmentId": "fe3a9a46-6a47-40ee-afd9-7952ae90a75a",
                        "privateIpv4Address": "10.0.1.163"
                    }
                ],
                "cpu": "0"
            }
        ],
        "cpu": "256",
        "createdAt": "2025-05-06T11:02:13.877Z",
        "desiredStatus": "RUNNING",
        "enableExecuteCommand": false,
        "ephemeralStorage": {
            "sizeInGiB": 20
        },
        "group": "family:webserver",
        "launchType": "FARGATE",
        "lastStatus": "RUNNING",
        "memory": "512",
        "overrides": {
            "containerOverrides": [
                {
                    "name": "web"
                },
                {
                    "environment": [
                        {
                            "name": "CLUSTER_NAME",
                            "value": "example-cluster"
                        },
                        {
                            "name": "REGION",
                            "value": "us-east-1"
                        },
                        {
                            "name": "HOST_PROC",
                            "value": "/host_proc"
                        },
                        {
                            "name": "AGENT_RUNTIME_ENVIRONMENT",
                            "value": "ecsfargate"
                        },
                        {
                            "name": "STAGE",
                            "value": "prod"
                        }
                    ],
                    "memory": 128,
                    "name": "aws-guardduty-agent-nm40lC"
                },
                {
                    "name": "aws-otel-collector"
                }
            ]
        },
        "platformVersion": "1.4.0",
        "pullStartedAt": "2025-05-06T11:02:24.162Z",
        "pullStoppedAt": "2025-05-06T11:02:33.493Z",
        "startedAt": "2025-05-06T11:02:34.325Z",
        "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/example-cluster/a1173316d40a45dea9",
        "taskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/webserver:5",
        "updatedAt": "2025-05-06T11:02:34.325Z",
        "version": 3
    }
}
```

**Example**  
Berikut ini adalah contoh peristiwa perubahan status tugas untuk EC2.  

```
{
    "version": "0",
    "id": "a65cf262-f104-0dd5-ceda-4b09ba71a441",
    "detail-type": "ECS Task State Change",
    "source": "aws.ecs",
    "account": "123456789012",
    "time": "2025-05-12T13:12:06Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ecs:us-east-1:123456789012:task/example/c1ffa94f19a540ed8d9f7e1d2a5d"
    ],
    "detail": {
        "attachments": [
            {
                "id": "52333e3b-b812-41a8-b057-9ed184bbe5e1",
                "type": "eni",
                "status": "ATTACHED",
                "details": [
                    {
                        "name": "subnetId",
                        "value": "subnet-0d0eab1bb38d5ca64"
                    },
                    {
                        "name": "networkInterfaceId",
                        "value": "eni-0ea90f746500773a4"
                    },
                    {
                        "name": "macAddress",
                        "value": "0e:d5:9b:ce:49:fb"
                    },
                    {
                        "name": "privateDnsName",
                        "value": "ip-10-0-1-37.ec2.internal"
                    },
                    {
                        "name": "privateIPv4Address",
                        "value": "10.0.1.37"
                    }
                ]
            }
        ],
        "attributes": [
            {
                "name": "ecs.cpu-architecture",
                "value": "x86_64"
            }
        ],
        "availabilityZone": "us-east-1b",
        "capacityProviderName": "Infra-ECS-Cluster-example-fa84e0cc-AsgCapacityProvider-OseQJU9pizmp",
        "clusterArn": "arn:aws:ecs:us-east-1:123456789012:cluster/example",
        "connectivity": "CONNECTED",
        "connectivityAt": "2025-05-12T13:11:44.98Z",
        "containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/example/d1d84798400f49f3b21cb61610c1e",
        "containers": [
            {
                "containerArn": "arn:aws:ecs:us-east-1:123456789012:container/example/c1ffa94f19a540ed8d9f7e1d2a5d3626/197d0994-5367-4a6d-9f9a-f075e4a6",
                "lastStatus": "RUNNING",
                "name": "aws-otel-collector",
                "image": "public.ecr.aws/aws-observability/aws-otel-collector:v0.32.0",
                "imageDigest": "sha256:7a1b3560655071bcacd66902c20ebe9a69470d5691fe3bd36baace7c2f3c4640",
                "runtimeId": "8e926f0ccd8fe2b459926f49584ba6d33a3d9f61398dbabe944ee6a13a8ff3a1",
                "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/example/c1ffa94f19a540ed8d9f7e1d2a5d",
                "networkInterfaces": [
                    {
                        "attachmentId": "52333e3b-b812-41a8-b057-9ed184bbe5e1",
                        "privateIpv4Address": "10.0.1.37"
                    }
                ],
                "cpu": "0"
            },
            {
                "containerArn": "arn:aws:ecs:us-east-1:123456789012:container/example/c1ffa94f19a540ed8d9f7e1d2a5d3626/cab39ef0-9c50-459d-844b-b9d51d73d",
                "lastStatus": "RUNNING",
                "name": "web",
                "image": "nginx",
                "imageDigest": "sha256:c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66",
                "runtimeId": "9f1c73f0094f051541d9e5c2ab1e172d83c4eb5171bcc857c4504b02770ff3b8",
                "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/example/c1ffa94f19a540ed8d9f7e1d2a5d",
                "networkInterfaces": [
                    {
                        "attachmentId": "52333e3b-b812-41a8-b057-9ed184bbe5e1",
                        "privateIpv4Address": "10.0.1.37"
                    }
                ],
                "cpu": "99",
                "memory": "100"
            }
        ],
        "cpu": "256",
        "createdAt": "2025-05-12T13:11:44.98Z",
        "desiredStatus": "RUNNING",
        "enableExecuteCommand": false,
        "group": "family:webserver",
        "launchType": "EC2",
        "lastStatus": "RUNNING",
        "memory": "512",
        "overrides": {
            "containerOverrides": [
                {
                    "name": "aws-otel-collector"
                },
                {
                    "name": "web"
                }
            ]
        },
        "pullStartedAt": "2025-05-12T13:11:59.491Z",
        "pullStoppedAt": "2025-05-12T13:12:05.896Z",
        "startedAt": "2025-05-12T13:12:06.053Z",
        "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/example/c1ffa94f19a540ed8d9f7e1d2a5d",
        "taskDefinitionArn": "arn:aws:ecs:us-east-1:123456789012:task-definition/webserver",
        "updatedAt": "2025-05-12T13:12:06.053Z",
        "version": 4
    }
}
```

# Acara tindakan layanan Amazon ECS
<a name="ecs_service_events"></a>

Amazon ECS mengirimkan peristiwa tindakan layanan dengan jenis detail **ECS Service** Action. Tidak seperti peristiwa perubahan status instans kontainer dan tugas, peristiwa tindakan layanan tidak mencakup nomor versi di bidang tanggapan `details`. Berikut ini adalah pola peristiwa yang digunakan untuk membuat EventBridge aturan untuk peristiwa tindakan layanan Amazon ECS. Untuk informasi selengkapnya, lihat [Memulai EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html) di *Panduan EventBridge Pengguna Amazon*.

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

Amazon ECS mengirimkan acara dengan`INFO`,`WARN`, dan jenis `ERROR` acara. Berikut ini adalah peristiwa tindakan layanan.

## Peristiwa tindakan layanan dengan tipe peristiwa `INFO`
<a name="ecs_service_events_info_type"></a>

`SERVICE_STEADY_STATE`  
Kondisi layanan ini baik dan pada jumlah tugas yang diinginkan, sehingga mencapai status stabil. Penjadwal layanan melaporkan status secara berkala, sehingga Anda mungkin menerima pesan ini beberapa kali.

`TASKSET_STEADY_STATE`  
Tugas yang ditetapkan dalam kondisi baik dan pada jumlah tugas yang diinginkan, sehingga mencapai status stabil.

`CAPACITY_PROVIDER_STEADY_STATE`  
Penyedia kapasitas yang terkait dengan layanan mencapai status stabil.

`SERVICE_DESIRED_COUNT_UPDATED`  
Ketika penjadwal layanan memperbarui jumlah hitungan yang diinginkan untuk set layanan atau tugas. Peristiwa ini tidak dikirim ketika jumlah yang diinginkan diperbarui secara manual oleh pengguna.

`TASKS_STOPPED`  
Layanan telah menghentikan tugas yang sedang berjalan.

`SERVICE_DEPLOYMENT_IN_PROGRESS`  
Penyebaran layanan sedang berlangsung. Penyebaran layanan dapat berupa rollback, atau revisi layanan baru.

`SERVICE_DEPLOYMENT_COMPLETED`  
Penyebaran layanan dalam kondisi mapan dan selesai. Penyebaran layanan dapat berupa rollback, atau untuk menerapkan revisi layanan yang diperbarui.

## Peristiwa tindakan layanan dengan tipe peristiwa `WARN`
<a name="ecs_service_events_warn_type"></a>

`SERVICE_TASK_START_IMPAIRED`  
Layanan ini tidak dapat berhasil memulai tugas secara konsisten.

`SERVICE_DISCOVERY_INSTANCE_UNHEALTHY`  
Layanan yang menggunakan penemuan layanan berisi tugas yang kondisinya tidak baik. Penjadwal layanan mendeteksi bahwa kondisi tugas dalam registri layanan tidak baik.

`VPC_LATTICE_TARGET_UNHEALTHY`  
Layanan menggunakan VPC Lattice telah mendeteksi salah satu target untuk VPC Lattice tidak sehat.

## Peristiwa tindakan layanan dengan tipe peristiwa `ERROR`
<a name="ecs_service_events_error_type"></a>

`SERVICE_DAEMON_PLACEMENT_CONSTRAINT_VIOLATED`  
Tugas dalam layanan yang menggunakan strategi penjadwal layanan `DAEMON` tidak lagi memenuhi strategi kendala penempatan untuk layanan.

`ECS_OPERATION_THROTTLED`  
Penjadwal layanan telah dibatasi karena batas throttle Amazon ECS API.

`SERVICE_DISCOVERY_OPERATION_THROTTLED`  
Penjadwal layanan telah dibatasi karena batas throttle AWS Cloud Map API. Hal ini dapat terjadi pada layanan yang dikonfigurasi untuk menggunakan penemuan layanan.

`SERVICE_TASK_PLACEMENT_FAILURE`  
Penjadwal layanan tidak dapat menempatkan tugas. Penyebabnya akan dijelaskan dalam bidang `reason`.  
Penyebab umum untuk acara layanan ini dihasilkan adalah karena kurangnya sumber daya di cluster untuk menempatkan tugas. Misalnya, kurangnya kapasitas CPU atau memori pada instans kontainer yang tersedia atau tidak tersedianya instans kontainer. Penyebab umum lainnya adalah ketika agen penampung Amazon ECS terputus pada instance penampung, menyebabkan penjadwal tidak dapat menempatkan tugas.

`SERVICE_TASK_CONFIGURATION_FAILURE`  
Penjadwal layanan tidak dapat menempatkan tugas karena kesalahan konfigurasi. Penyebabnya akan dijelaskan dalam bidang `reason`.  
Penyebab umum peristiwa layanan ini dihasilkan adalah karena tag diterapkan ke layanan tetapi pengguna atau peran belum memilih format Amazon Resource Name (ARN) baru di Wilayah. Untuk informasi selengkapnya, lihat [Nama Sumber Daya Amazon (ARNs) dan IDs](ecs-account-settings.md#ecs-resource-ids). Penyebab umum lainnya adalah Amazon ECS tidak dapat mengambil peran tugas IAM yang disediakan.

`SERVICE_HEALTH_UNKNOWN`  
Layanan tidak dapat menggambarkan data kesehatan untuk tugas-tugas.

`SERVICE_DEPLOYMENT_FAILED`  
Penyebaran layanan tidak mencapai stabil. Ini terjadi ketika a CloudWatch dipicu atau pemutus sirkuit mendeteksi kegagalan penyebaran layanan.

**Example Peristiwa status stabil layanan**  
Peristiwa status stabil layanan disampaikan dalam format berikut. Untuk informasi selengkapnya tentang EventBridge parameter, lihat [Peristiwa EventBridge di](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) *Panduan EventBridge Pengguna Amazon*.  

```
{
    "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"
    }
}
```

**Example Peristiwa status stabil penyedia kapasitas**  
Peristiwa status stabil penyedia kapasitas disampaikan dalam format berikut.  

```
{
    "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"
    }
}
```

**Example Peristiwa gangguan memulai tugas layanan**  
Peristiwa gangguan memulai tugas layanan disampaikan dalam format berikut.  

```
{
    "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"
    }
}
```

**Example Peristiwa kegagalan penempatan tugas layanan**  
Peristiwa kegagalan penempatan tugas disampaikan dalam format berikut. Untuk informasi selengkapnya, lihat [Acara EventBridge di](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) *Panduan EventBridge Pengguna Amazon*.  
Dalam contoh berikut, tugas mencoba untuk menggunakan penyedia kapasitas `FARGATE_SPOT` tetapi penjadwal layanan tidak dapat memperoleh kapasitas Fargate Spot.  

```
{
    "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"
    }
}
```
Dalam contoh berikut untuk EC2, tugas tersebut dicoba untuk diluncurkan pada Instance Container `2dd1b186f39845a584488d2ef155c131` tetapi penjadwal layanan tidak dapat menempatkan tugas karena CPU yang tidak mencukupi.  

```
{
  "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"
  }
}
```

# Acara perubahan status penerapan layanan Amazon ECS
<a name="ecs_service_deployment_events"></a>

Amazon ECS mengirimkan peristiwa perubahan status penerapan layanan dengan jenis detail Perubahan Status **Penerapan ECS**. Berikut ini adalah pola peristiwa yang digunakan untuk membuat EventBridge aturan untuk peristiwa perubahan status penerapan layanan Amazon ECS. Untuk informasi selengkapnya tentang membuat EventBridge aturan, lihat [Memulai Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html) *di Panduan EventBridge Pengguna Amazon*.

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

Amazon ECS mengirimkan acara dengan `INFO` dan jenis `ERROR` acara. Untuk informasi selengkapnya, lihat [Acara tindakan layanan Amazon ECS](ecs_service_events.md)

Berikut adalah peristiwa perubahan status deployment layanan.

`SERVICE_DEPLOYMENT_IN_PROGRESS`  
Deployment layanan sedang berlangsung. Peristiwa ini dikirim untuk deployment awal dan deployment rollback.

`SERVICE_DEPLOYMENT_COMPLETED`  
Deployment layanan telah selesai. Peristiwa ini dikirim setelah layanan mencapai status stabil setelah deployment.

`SERVICE_DEPLOYMENT_FAILED`  
Deployment layanan gagal. Acara ini dikirim untuk layanan dengan logika pemutus sirkuit penyebaran diaktifkan.

**Example Peristiwa deployment layanan sedang berlangsung**  
Peristiwa deployment layanan yang sedang berlangsung disampaikan ketika deployment awal dan rollback dimulai. Perbedaan antara keduanya ada di bidang `reason`. Untuk informasi selengkapnya tentang EventBridge parameter, lihat [metadata peristiwa AWS layanan;](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html) di * EventBridge Panduan Pengguna Amazon*.  
Berikut ini menampilkan contoh output untuk permulaan deployment awal.  

```
{
   "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."
   }
}
```
Berikut ini menampilkan contoh output untuk permulaan deployment rollback. Bidang `reason` menyediakan ID deployment yang digunakan untuk mematalkan layanan.  

```
{
   "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."
   }
}
```

**Example Peristiwa deployment layanan yang telah selesai**  
Peristiwa status deployment layanan yang telah selesai disampaikan dalam format berikut. Untuk informasi selengkapnya, lihat [Melakukan deployment layanan Amazon ECS dengan mengganti tugas](deployment-type-ecs.md).  

```
{
   "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."
   }
}
```

**Example Peristiwa deployment layanan yang gagal**  
Peristiwa deployment layanan yang gagal disampaikan dalam format berikut. Peristiwa status gagal penerapan layanan hanya akan dikirim untuk layanan yang mengaktifkan logika pemutus sirkuit penerapan. Untuk informasi selengkapnya, lihat [Melakukan deployment layanan Amazon ECS dengan mengganti tugas](deployment-type-ecs.md).  

```
{
   "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."
   }
}
```

# Menangani acara Amazon ECS
<a name="ecs_cwet_handling"></a>

Amazon ECS mengirimkan acara *setidaknya sekali*. Ini berarti Anda mungkin menerima banyak salinan dari acara tertentu. Selain itu, peristiwa mungkin tidak dikirimkan ke listener peristiwa Anda sesuai urutan peristiwa yang terjadi.

Untuk memesan acara dengan benar, `detail` bagian dari setiap acara berisi `version` properti. Setiap kali sumber daya mengubah status, `version` ini bertambah. Peristiwa duplikat memiliki `version` yang sama di objek `detail`. Jika Anda mereplikasi instans penampung Amazon ECS dan status tugas dengan EventBridge, Anda dapat membandingkan versi sumber daya yang dilaporkan oleh Amazon ECS APIs dengan sumber daya yang `version` dilaporkan dalam EventBridge untuk memverifikasi bahwa versi dalam aliran peristiwa Anda saat ini. Peristiwa dengan jumlah properti versi yang lebih tinggi harus diperlakukan sebagai peristiwa yang terjadi setelah peristiwa dengan jumlah versi yang lebih rendah.

## Contoh: Menangani peristiwa dalam suatu AWS Lambda fungsi
<a name="ecs_cwet_handling_example"></a>

Contoh berikut menunjukkan fungsi Lambda yang ditulis dengan Python 3.9 yang menangkap peristiwa perubahan status instance tugas dan kontainer dan menyimpannya ke salah satu dari dua tabel Amazon DynamoDB:
+ *ECSCtrInstanceState*— Menyimpan status terbaru untuk instance kontainer. ID tabel adalah nilai `containerInstanceArn` instans kontainer.
+ *ECSTaskNegara* - Menyimpan status terbaru untuk suatu tugas. ID tabel adalah nilai `taskArn` tugas.

```
import json
import boto3

def lambda_handler(event, context):
    id_name = ""
    new_record = {}

    # For debugging so you can see raw event format.
    print('Here is the event:')
    print((json.dumps(event)))

    if event["source"] != "aws.ecs":
       raise ValueError("Function only supports input from events with a source type of: aws.ecs")

    # Switch on task/container events.
    table_name = ""
    if event["detail-type"] == "ECS Task State Change":
        table_name = "ECSTaskState"
        id_name = "taskArn"
        event_id = event["detail"]["taskArn"]
    elif event["detail-type"] == "ECS Container Instance State Change":
        table_name = "ECSCtrInstanceState"
        id_name =  "containerInstanceArn"
        event_id = event["detail"]["containerInstanceArn"]
    else:
        raise ValueError("detail-type for event is not a supported type. Exiting without saving event.")

    new_record["cw_version"] = event["version"]
    new_record.update(event["detail"])

    # "status" is a reserved word in DDB, but it appears in containerPort
    # state change messages.
    if "status" in event:
        new_record["current_status"] = event["status"]
        new_record.pop("status")


    # Look first to see if you have received a newer version of an event ID.
    # If the version is OLDER than what you have on file, do not process it.
    # Otherwise, update the associated record with this latest information.
    print("Looking for recent event with same ID...")
    dynamodb = boto3.resource("dynamodb", region_name="us-east-1")
    table = dynamodb.Table(table_name)
    saved_event = table.get_item(
        Key={
            id_name : event_id
        }
    )
    if "Item" in saved_event:
        # Compare events and reconcile.
        print(("EXISTING EVENT DETECTED: Id " + event_id + " - reconciling"))
        if saved_event["Item"]["version"] < event["detail"]["version"]:
            print("Received event is a more recent version than the stored event - updating")
            table.put_item(
                Item=new_record
            )
        else:
            print("Received event is an older version than the stored event - ignoring")
    else:
        print(("Saving new event - ID " + event_id))

        table.put_item(
            Item=new_record
        )
```

Contoh Fargate berikut menunjukkan fungsi Lambda yang ditulis dengan Python 3.9 yang menangkap peristiwa perubahan status tugas dan menyimpannya ke tabel Amazon DynamoDB berikut:

```
import json
import boto3

def lambda_handler(event, context):
    id_name = ""
    new_record = {}

    # For debugging so you can see raw event format.
    print('Here is the event:')
    print((json.dumps(event)))

    if event["source"] != "aws.ecs":
       raise ValueError("Function only supports input from events with a source type of: aws.ecs")

    # Switch on task/container events.
    table_name = ""
    if event["detail-type"] == "ECS Task State Change":
        table_name = "ECSTaskState"
        id_name = "taskArn"
        event_id = event["detail"]["taskArn"]
    else:
        raise ValueError("detail-type for event is not a supported type. Exiting without saving event.")

    new_record["cw_version"] = event["version"]
    new_record.update(event["detail"])

    # "status" is a reserved word in DDB, but it appears in containerPort
    # state change messages.
    if "status" in event:
        new_record["current_status"] = event["status"]
        new_record.pop("status")


    # Look first to see if you have received a newer version of an event ID.
    # If the version is OLDER than what you have on file, do not process it.
    # Otherwise, update the associated record with this latest information.
    print("Looking for recent event with same ID...")
    dynamodb = boto3.resource("dynamodb", region_name="us-east-1")
    table = dynamodb.Table(table_name)
    saved_event = table.get_item(
        Key={
            id_name : event_id
        }
    )
    if "Item" in saved_event:
        # Compare events and reconcile.
        print(("EXISTING EVENT DETECTED: Id " + event_id + " - reconciling"))
        if saved_event["Item"]["version"] < event["detail"]["version"]:
            print("Received event is a more recent version than the stored event - updating")
            table.put_item(
                Item=new_record
            )
        else:
            print("Received event is an older version than the stored event - ignoring")
    else:
        print(("Saving new event - ID " + event_id))

        table.put_item(
            Item=new_record
        )
```