Amazon ECS 서비스 액션 이벤트
Amazon ECS 서비스 액션 이벤트
Amazon ECS가 보내는 서비스 액션 이벤트(service action events)와 그 유형(INFO, WARN, ERROR)별 목록, 그리고 EventBridge 규칙을 만드는 방법을 알아봐요.
출처: 문서
본문
Amazon ECS는 상세 유형이 ECS Service Action인 서비스 액션 이벤트를 보내요. 컨테이너 인스턴스 및 태스크 상태 변경 이벤트와 달리 서비스 액션 이벤트는 details 응답 필드에 버전 번호를 포함하지 않아요. 다음은 Amazon ECS 서비스 액션 이벤트용 EventBridge 규칙을 만드는 데 사용되는 이벤트 패턴이에요. 자세한 내용은 Amazon EventBridge User Guide의 Getting started with EventBridge 참고.
{
"source": [
"aws.ecs"
],
"detail-type": [
"ECS Service Action"
]
}
Amazon ECS는 INFO, WARN, ERROR 이벤트 유형으로 이벤트를 보내요. 다음은 서비스 액션 이벤트들이에요.
INFO 이벤트 유형의 서비스 액션 이벤트
- SERVICE_STEADY_STATE - 서비스가 건강하고 원하는 태스크 수에 있어 안정 상태(steady state)에 도달했어요. 서비스 스케줄러가 상태를 주기적으로 보고하므로 이 메시지를 여러 번 받을 수 있어요.
- TASKSET_STEADY_STATE - 태스크 세트가 건강하고 원하는 태스크 수에 있어 안정 상태에 도달했어요.
- CAPACITY_PROVIDER_STEADY_STATE - 서비스와 연결된 capacity provider가 안정 상태에 도달했어요.
- SERVICE_DESIRED_COUNT_UPDATED - 서비스 스케줄러가 서비스나 태스크 세트의 계산된 desired count를 업데이트했어요. 이 이벤트는 desired count가 사용자에 의해 수동으로 업데이트될 때는 전송되지 않아요.
- TASKS_STOPPED - 서비스가 실행 중인 태스크를 중지했어요.
- SERVICE_DEPLOYMENT_IN_PROGRESS - 서비스 배포가 진행 중이에요. 서비스 배포는 롤백이거나 새 서비스 리비전일 수 있어요.
- SERVICE_DEPLOYMENT_COMPLETED - 서비스 배포가 안정 상태에 있고 완료되었어요. 서비스 배포는 롤백이거나 업데이트된 서비스 리비전 배포일 수 있어요.
WARN 이벤트 유형의 서비스 액션 이벤트
- SERVICE_TASK_START_IMPAIRED - 서비스가 태스크를 지속적으로 성공적으로 시작할 수 없어요.
- SERVICE_DISCOVERY_INSTANCE_UNHEALTHY - 서비스 검색을 사용하는 서비스에 비정상 태스크가 있어요. 서비스 스케줄러가 서비스 레지스트리 내의 태스크가 비정상임을 감지해요.
- VPC_LATTICE_TARGET_UNHEALTHY - VPC Lattice를 사용하는 서비스가 VPC Lattice 대상 중 하나가 비정상임을 감지했어요.
ERROR 이벤트 유형의 서비스 액션 이벤트
- SERVICE_DAEMON_PLACEMENT_CONSTRAINT_VIOLATED -
DAEMON서비스 스케줄러 전략을 사용하는 서비스의 태스크가 서비스의 배치 제약 전략을 더 이상 충족하지 않아요. - ECS_OPERATION_THROTTLED - Amazon ECS API 제한 한도로 인해 서비스 스케줄러가 제한(throttled)되었어요.
- SERVICE_DISCOVERY_OPERATION_THROTTLED - AWS Cloud Map API 제한 한도로 인해 서비스 스케줄러가 제한되었어요. 이는 서비스 검색을 사용하도록 구성된 서비스에서 발생할 수 있어요.
- SERVICE_TASK_PLACEMENT_FAILURE - 서비스 스케줄러가 태스크를 배치할 수 없어요. 원인은
reason필드에 설명돼요. 이 서비스 이벤트가 생성되는 일반적인 원인은 태스크를 배치할 클러스터의 리소스 부족이에요. 예를 들어 사용 가능한 컨테이너 인스턴스에 CPU·메모리 용량이 충분하지 않거나 사용 가능한 컨테이너 인스턴스가 없는 경우예요. 또 다른 일반적인 원인은 컨테이너 인스턴스에서 Amazon ECS container agent가 연결이 끊겨 스케줄러가 태스크를 배치할 수 없는 경우예요. - SERVICE_TASK_CONFIGURATION_FAILURE - 서비스 스케줄러가 구성 오류로 인해 태스크를 배치할 수 없어요. 원인은
reason필드에 설명돼요. 이 서비스 이벤트가 생성되는 일반적인 원인은 서비스에 태그가 적용되고 있었지만 사용자나 역할이 리전의 새 ARN(Amazon Resource Name) 형식에 옵트인하지 않은 경우예요. 자세한 내용은 Amazon Resource Names (ARNs) and IDs 참고. 또 다른 일반적인 원인은 Amazon ECS가 제공된 태스크 IAM 역할을 가정할 수 없는 경우예요. - SERVICE_HEALTH_UNKNOWN - 서비스가 태스크의 상태 데이터를 설명할 수 없어요.
- SERVICE_DEPLOYMENT_FAILED - 서비스 배포가 안정 상태에 도달하지 못했어요. CloudWatch가 트리거되거나 회로 차단기가 서비스 배포 실패를 감지할 때 발생해요.
예시: 서비스 안정 상태 이벤트 (Service steady state event)
서비스 안정 상태 이벤트는 다음 형식으로 전달돼요. EventBridge 파라미터에 대한 자세한 내용은 Amazon EventBridge User Guide의 Events in EventBridge 참고.
{
"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"
}
}
예시: Capacity provider 안정 상태 이벤트
capacity provider 안정 상태 이벤트는 다음 형식으로 전달돼요.
{
"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"
}
}
예시: 서비스 태스크 시작 지연 이벤트 (Service task start impaired event)
서비스 태스크 시작 지연 이벤트는 다음 형식으로 전달돼요.
{
"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"
}
}
예시: 서비스 태스크 배치 실패 이벤트
서비스 태스크 배치 실패 이벤트는 다음 형식으로 전달돼요. 자세한 내용은 Amazon EventBridge User Guide의 Events in EventBridge 참고. 다음 예시에서 태스크는 FARGATE_SPOT capacity provider를 사용하려고 했지만 서비스 스케줄러가 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"
}
}
다음 예시는 EC2에서 태스크가 Container Instance 2dd1b186f39845a584488d2ef155c131에 시작하려 했지만 서비스 스케줄러가 CPU 부족으로 태스크를 배치할 수 없었어요.
{
"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"
}
}