

# Amazon ECS 작업 중지 이벤트에 대한 Amazon Simple Notification Service 알림 보내기
<a name="ecs_cwet2"></a>

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

## 필수 조건: 테스트 클러스터 설정
<a name="cwet2_step_1"></a>

 이벤트를 캡처할 실행 클러스터가 없는 경우 [Getting started with the console using Linux containers on AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started-fargate.html#get-started-fargate-cluster)의 단계를 따라 클러스터를 하나 생성합니다. 본 자습서의 말미에서는 이 클러스터에서 태스크를 실행하여 Amazon SNS 주제와 EventBridge 이벤트 규칙이 올바로 구성되었는지 테스트합니다.

## 전제 조건: Amazon SNS 대한 권한 구성
<a name="cwet2_step_1a"></a>

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

권한을 추가하는 방법에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 권한](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html#eb-sns-permissions)을 참조하세요.

다음 권한을 추가합니다.

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

## 1단계: Amazon SNS 주제 생성 및 구독
<a name="cwet2_step_2"></a>

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

Amazon SNS 주제 생성 및 구독 방법에 대한 자세한 정보는 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 시작하기](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html#step-create-queue)를 참조하고 다음 표를 사용하여 선택할 옵션을 결정하세요.


| 옵션 | 값 | 
| --- | --- | 
|  Type  | 표준 | 
| 이름 |  TaskStoppedAlert  | 
| 프로토콜 | 이메일 | 
| 엔드포인트 |  현재 액세스 권한이 있는 이메일 주소  | 

## 2단계: 이벤트 규칙 등록
<a name="cwet2_step_3"></a>

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

Amazon SNS 주제 생성 및 구독 방법에 대한 자세한 정보는 [Amazon EventBridge User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html)(Amazon EventBridge 사용 설명서)의 *Create a rule in Amazon EventBridge*(Amazon EventBridge에서 규칙 생성)를 참조하고 다음 표를 사용하여 선택할 옵션을 결정하세요.


| 옵션 | 값 | 
| --- | --- | 
|  규칙 타입  |  이벤트 패턴이 있는 규칙  | 
| 이벤트 소스 | AWS 이벤트 또는 EventBridge 파트너 이벤트 | 
| 이벤트 패턴 |  사용자 정의 패턴(JSON 편집기)  | 
| 이벤트 패턴 |  <pre>{<br />   "source":[<br />      "aws.ecs"<br />   ],<br />   "detail-type":[<br />      "ECS Task State Change"<br />   ],<br />   "detail":{<br />      "lastStatus":[<br />         "STOPPED"<br />      ],<br />      "stoppedReason":[<br />         "Essential container in task exited"<br />      ]<br />   }<br />}</pre> | 
| 대상 유형 |  AWS 서비스  | 
| 대상 | SNS 주제 | 
| 주제 |  TaskStoppedAlert(1단계에서 생성한 주제)  | 

## 3단계: 규칙 테스트
<a name="cwet2_step_4"></a>

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

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

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

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

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

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

**콘솔에서 작업을 실행하려면 다음을 수행하세요.**

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

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

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

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

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

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

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