Amazon ECS 작업 중지 이벤트에 대한 Amazon Simple Notification Service 알림 보내기 - Amazon Elastic Container Service

Amazon ECS 작업 중지 이벤트에 대한 Amazon Simple Notification Service 알림 보내기

필수 컨테이너 중 하나가 종료되어 작업 실행이 중지된 작업 이벤트만 캡처하는 Amazon EventBridge 이벤트 규칙을 구성합니다. 이 이벤트는 특정 Amazon SNS 속성을 포함하는 작업 이벤트만 지정된 stoppedReason 주제로 전송합니다.

필수 조건: 테스트 클러스터 설정

이벤트를 캡처할 실행 클러스터가 없는 경우 Getting started with the console using Linux containers on AWS Fargate의 단계를 따라 클러스터를 하나 생성합니다. 본 자습서의 말미에서는 이 클러스터에서 태스크를 실행하여 Amazon SNS 주제와 EventBridge 이벤트 규칙이 올바로 구성되었는지 테스트합니다.

전제 조건: Amazon SNS 대한 권한 구성

EventBridge가 Amazon SNS 주제에 게시할 수 있도록 허용하려면 aws sns get-topic-attributes 및 aws sns set-topic-attributes 명령을 사용하세요.

권한을 추가하는 방법에 대한 자세한 내용은 Amazon Simple Notification Service 개발자 안내서Amazon SNS 권한을 참조하세요.

다음 권한을 추가합니다.

{ "Sid": "PublishEventsToMyTopic", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns: Publish", "Resource": "arn:aws:sns:region:account-id:TaskStoppedAlert", }

1단계: Amazon SNS 주제 생성 및 구독

본 자습서를 위해 새 이벤트 규칙의 이벤트 대상으로 사용할 Amazon SNS 주제를 구성합니다.

Amazon SNS 주제 생성 및 구독 방법에 대한 자세한 정보는 Amazon Simple Notification Service 개발자 안내서Amazon SNS 시작하기를 참조하고 다음 표를 사용하여 선택할 옵션을 결정하세요.

옵션

유형

표준
명칭

TaskStoppedAlert

프로토콜 이메일
엔드포인트

현재 액세스 권한이 있는 이메일 주소

2단계: 이벤트 규칙 등록

다음에는 컨테이너가 중지된 작업에 대한 작업 중지 이벤트만 캡처하는 이벤트 규칙을 등록합니다.

Amazon SNS 주제 생성 및 구독 방법에 대한 자세한 정보는 Amazon EventBridge User Guide(Amazon EventBridge 사용 설명서)의 Create a rule in Amazon EventBridge(Amazon EventBridge에서 규칙 생성)를 참조하고 다음 표를 사용하여 선택할 옵션을 결정하세요.

옵션

규칙 타입

이벤트 패턴이 있는 규칙

이벤트 소스 AWS 이벤트 또는 EventBridge 파트너 이벤트
이벤트 패턴

사용자 정의 패턴(JSON 편집기)

이벤트 패턴
{ "source":[ "aws.ecs" ], "detail-type":[ "ECS Task State Change" ], "detail":{ "lastStatus":[ "STOPPED" ], "stoppedReason":[ "Essential container in task exited" ] } }
대상 유형

AWS 서비스

대상 SNS 주제
주제

TaskStoppedAlert(1단계에서 생성한 주제)

3단계: 규칙 테스트

규칙이 시작된 직후 종료되는 태스크를 실행하여 규칙이 작동하고 있는지 확인합니다. 이벤트 규칙이 올바로 구성되었다면 몇 분 후에 이벤트 텍스트가 포함된 이메일 메시지를 수신할 것입니다. 규칙 요구 사항을 충족할 수 있는 기존 태스크 정의가 있는 경우 이를 사용하여 태스크를 실행합니다. 없는 경우 다음 단계에 따라 Fargate 태스크 정의를 등록하고 실행할 수 있습니다.

  1. https://console.aws.amazon.com/ecs/v2에서 콘솔을 엽니다.

  2. 탐색 창에서 작업 정의를 선택합니다.

  3. 새 태스크 정의 생성(Create new task definition), JSON으로 새 태스크 정의 생성(Create new task definition with JSON)을 선택합니다.

  4. JSON 편집기 상자에서 JSON 파일을 편집하고 다음을 편집기에 복사합니다.

    { "containerDefinitions":[ { "command":[ "sh", "-c", "sleep 5" ], "essential":true, "image":"amazonlinux:2", "name":"test-sleep" } ], "cpu":"256", "executionRoleArn":"arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "family":"fargate-task-definition", "memory":"512", "networkMode":"awsvpc", "requiresCompatibilities":[ "FARGATE" ] }
  5. 생성(Create)을 선택합니다.

콘솔에서 작업을 실행하려면 다음을 수행하세요.
  1. https://console.aws.amazon.com/ecs/v2에서 콘솔을 엽니다.

  2. 클러스터 페이지에서 사전 조건에서 생성한 클러스터를 선택합니다.

  3. 작업(Tasks) 탭에서 새 작업 실행(Run new task)을 선택합니다.

  4. 애플리케이션 유형(Application type)에서 작업(Task)을 선택합니다.

  5. 작업 정의에서 fargate-task-definition을 선택합니다.

  6. 원하는 작업(Desired tasks)에 시작할 작업 수를 입력합니다.

  7. 생성(Create)을 선택합니다.