View a markdown version of this page

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":"public.ecr.aws/amazonlinux/amazonlinux:latest", "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)을 선택합니다.