

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 전체 Amazon SES 계정에 대한 이메일 전송 자동 일시 중지
<a name="monitoring-sender-reputation-pausing-account"></a>

이 섹션의 절차에서는 Amazon SES, Amazon SNS, Amazon CloudWatch 및 AWS Lambda 을(를) 설정하여 단일 AWS 리전에 있는 Amazon SES 계정에 대한 이메일 전송을 자동으로 일시 중지하는 단계를 설명합니다. 여러 리전으로부터 이메일을 보내려면, 이 방법을 구현하고자 하는 리전마다 이 섹션의 절차를 반복하세요.

**Topics**
+ [1부 - IAM 역할 만들기](#monitoring-sender-reputation-pausing-account-part-1)
+ [2부: Lambda 함수 만들기](#monitoring-sender-reputation-pausing-account-part-2)
+ [3부: 계정에 대한 이메일 전송 재활성화](#monitoring-sender-reputation-pausing-account-part-3)
+ [4부: Amazon SNS 주제 생성 및 구독](#monitoring-sender-reputation-pausing-account-part-4)
+ [5부: CloudWatch 경보를 생성하려면](#monitoring-sender-reputation-pausing-account-part-5)
+ [6부: 솔루션 테스트](#monitoring-sender-reputation-pausing-account-part-6)

## 1부 - IAM 역할 만들기
<a name="monitoring-sender-reputation-pausing-account-part-1"></a>

이메일 전송 자동 일시 중지를 구성하는 첫 단계는 `UpdateAccountSendingEnabled` API 작업을 실행할 수 있는 IAM 역할을 만드는 것입니다.

**IAM 역할을 만들려면**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. **역할 만들기**를 선택합니다.

1. **Select trusted entity**(신뢰할 수 있는 엔터티 선택) 페이지의 **Trusted entity type**(신뢰할 수 있는 엔터티 유형) 아래에서 **AWS service**를 선택합니다.

1. **사용 사례(Use case)**에서 **Lambda**를 선택한 후 **다음(Next)**을 선택합니다.

1. **권한 추가(Add permissions)** 페이지에서 다음 정책을 선택합니다.
   + **AWSLambdaBasicExecutionRole**
   + **AmazonSESFullAccess**
**작은 정보**  
**권한 정책(Permission policies)** 아래의 검색 상자를 사용하여 이러한 정책을 빠르게 찾을 수 있지만 첫 번째 정책을 검색하고 선택한 후에는 두 번째 정책을 검색하고 선택하기 전에 **필터 지우기(Clear filters)**를 선택해야 합니다.

   그리고 **다음**을 선택합니다.

1. **이름 지정, 검토 및 만들기(Name, review, and create)** 페이지의 **역할 세부 정보(Role details)**에서 **역할 이름(Role name)** 필드에 정책의 의미 있는 이름을 입력합니다.

1. 선택한 두 정책이 **권한 정책 요약(Permissions policy summary)** 테이블에 나열되어 있는지 확인한 다음 **역할 만들기(Create role)**를 선택합니다.

## 2부: Lambda 함수 만들기
<a name="monitoring-sender-reputation-pausing-account-part-2"></a>

IAM 역할을 만든 후에는 계정에 대한 이메일 전송을 일시 중지시키는 Lambda 함수를 만들 수 있습니다.

**Lambda 함수를 만들려면**

1. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) AWS Lambda 콘솔을 엽니다.

1. 리전 선택기를 사용하여 이 Lambda 함수를 배포할 리전을 선택합니다.
**참고**  
이 함수는이 단계에서 선택한 AWS 리전에서만 이메일 전송을 일시 중지합니다. 둘 이상의 리전으로부터 이메일을 보내는 경우, 이메일 전송을 자동으로 일시 중지하려는 리전마다 이 섹션의 절차를 반복하세요.

1. **함수 만들기(Create function)**를 선택합니다.

1. **함수 만들기**에서 **Author from scratch**를 선택합니다.

1. **기본 정보(Basic information)**에서 다음 단계를 완료합니다.
   + **함수 이름(Function name)**에 Lambda 함수의 이름을 입력합니다.
   + **런타임**에서 **Node.js 18x**(또는 선택 목록에 현재 제공된 버전)를 선택합니다.
   + **아키텍처(Architecture)**에서 미리 선택된 기본값 **x86\$164**를 유지합니다.
   + 권한(Permissions)에서 **기본 실행 역할 변경(Change default execution role)**을 확장하고 **기존 역할 사용(Use an existing role)**을 선택합니다.
   + **기존 역할(Existing role)** 목록 상자 내부를 클릭하고 [1부 - IAM 역할 만들기](#monitoring-sender-reputation-pausing-account-part-1)에서 생성한 IAM 역할을 선택합니다.

   그 다음 **함수 만들기**(Create function)를 선택합니다.

1. 코드 편집기의 **코드 소스(Code source)**에 다음 코드를 붙여 넣습니다.

   ```
   'use strict';
   
   
   const { SES } = require("@aws-sdk/client-ses")
   
   // Create a new SES object. 
   
   var ses = new SES({});                  
   
   // Specify the parameters for this operation. In this case, there is only one
   // parameter to pass: the Enabled parameter, with a value of false
   // (Enabled = false disables email sending, Enabled = true enables it).
   var params = {
       Enabled: false
   };
   
   exports.handler = (event, context, callback) => {
       // Pause sending for your entire SES account
       ses.updateAccountSendingEnabled(params, function(err, data) {
           if(err) {
               console.log(err.message);
           } else {
               console.log(data);
           }
       });
   };
   ```

   그런 다음 **배포**를 선택합니다.

1. **테스트**를 선택합니다. **테스트 이벤트 구성(Configure test event)** 창이 나타나면 **이벤트 이름(Event name)** 필드에 이름을 입력한 후 **저장(Save)**을 선택합니다.

1. **테스트(Test)** 드롭 상자를 확장하고 방금 생성한 이벤트의 이름을 선택한 후 **테스트(Test)**를 선택합니다.

1. **실행 결과(Execution results)** 탭이 나타납니다. 바로 아래 오른쪽에 `Status: Succeeded`가 표시되는지 확인합니다. 함수가 실행되지 못하면 다음을 수행합니다.
   + [1부 - IAM 역할 만들기](#monitoring-sender-reputation-pausing-account-part-1)에서 생성한 IAM 역할에 올바른 정책이 포함되는지 확인합니다.
   + Lambda 함수의 코드에 오류가 없는지 확인합니다. Lambda 코드 편집기가 구문 오류 및 다른 잠재적인 문제를 자동으로 강조 표시합니다.

## 3부: 계정에 대한 이메일 전송 재활성화
<a name="monitoring-sender-reputation-pausing-account-part-3"></a>

[2부: Lambda 함수 만들기](#monitoring-sender-reputation-pausing-account-part-2)에서 Lambda 함수를 테스트할 때의 부작용은 Amazon SES 계정에 대한 이메일 전송이 일시 중지되는 것입니다. 대부분의 경우 CloudWatch 경보가 트리거될 때까지 계정에 대한 전송을 일시 중지하지 않습니다.

이 섹션의 절차에서는 Amazon SES 계정에 대한 이메일 전송을 다시 활성화합니다. 이 절차를 완료하려면 AWS Command Line Interface을 설치하고 구성해야 합니다. 자세한 내용은 [AWS Command Line Interface 사용 설명서](https://docs.aws.amazon.com/cli/latest/userguide/)를 참조하세요.

**이메일 전송을 재활성화하려면**

1. 명령줄에 다음 명령을 입력하여 계정에 대한 이메일 전송을 다시 활성화합니다. *sending\$1region*을 이메일 전송을 재활성화할 리전의 이름으로 바꿉니다.

   ```
   aws ses update-account-sending-enabled --enabled --region sending_region
   ```

1. 명령줄에 다음 명령을 입력하여 계정에 대한 이메일 전송 상태를 확인합니다. 

   ```
   aws ses get-account-sending-enabled --region sending_region
   ```

   다음 결과가 표시되면 계정에 대한 이메일 전송이 성공적으로 재활성화된 것입니다.

   ```
   {
       "Enabled": true 
   }
   ```

## 4부: Amazon SNS 주제 생성 및 구독
<a name="monitoring-sender-reputation-pausing-account-part-4"></a>

경보가 트리거될 때 CloudWatch가 Lambda 함수를 실행하려면 먼저 Amazon SNS 주제를 생성하고 해당 Lambda 함수를 구독해야 합니다.

**Amazon SNS 주제를 생성하고 Lambda 함수로 구독**

1. [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)에서 Amazon SNS 콘솔을 엽니다.

1. *Amazon Simple Notification Service 개발자 안내서*의 단계에 따라 [주제를 생성](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)합니다.

   1. **Type**(유형)은 **Standard**(표준)(**FIFO** 아님)여야 합니다.

1. *Amazon Simple Notification Service 개발자 안내서*의 단계에 따라 [주제를 구독](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)합니다.

   1. **프로토콜**에서 **AWS Lambda**를 선택합니다.

   1. **엔드포인트**에서 [2부: Lambda 함수 만들기](#monitoring-sender-reputation-pausing-account-part-2)에서 생성한 Lambda 함수를 선택합니다.

## 5부: CloudWatch 경보를 생성하려면
<a name="monitoring-sender-reputation-pausing-account-part-5"></a>

이 섹션에는 지표가 특정 임계값에 도달하면 트리거되는 CloudWatch에 경보를 생성하기 위한 절차가 포함되어 있습니다. 경보가 트리거되면 [4부: Amazon SNS 주제 생성 및 구독](#monitoring-sender-reputation-pausing-account-part-4)에서 생성한 Amazon SNS 주제에 알림을 전달한 후 [2부: Lambda 함수 만들기](#monitoring-sender-reputation-pausing-account-part-2)에서 생성한 Lambda 함수를 실행합니다.

**CloudWatch 경보를 생성하려면**

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

1. 리전 선택기를 사용하여 이메일 전송을 자동으로 일시 중지하려는 리전을 선택합니다.

1. 탐색 창에서 **경보(Alarms)**를 선택하세요.

1. **경보 생성**을 선택합니다.

1. [**Create Alarm**] 창의 [**SES Metrics**] 아래에서 [**Account Metrics**]를 선택합니다.

1. [**Metric Name**] 아래에서 다음 옵션 중 하나를 선택합니다.
   + **Reputation.BounceRate** – 계정의 전체 하드 바운스 발생률이 사용자가 정의하는 임계값을 초과할 때 계정에 대한 이메일 전송을 일시 중지하려면 이 지표를 선택합니다.
   + **Reputation.ComplaintRate** – 계정의 전체 수신 거부 발생률이 사용자가 정의하는 임계값을 초과할 때 계정에 대한 이메일 전송을 일시 중지하려면 이 지표를 선택합니다.

   **다음**을 선택합니다.

1. 다음 단계를 완료합니다.
   + [**Alarm Threshold**]에서 [**Name**]에 경보 이름을 입력합니다.
   + [**Whenever: Reputation.BounceRate**] 또는 [**Whenever: Reputation.ComplaintRate**] 아래에서 경보를 트리거하게 하는 임계값을 지정합니다.
**참고**  
반송 메일 발생률이 5%를 초과하거나 수신 거부 발생률이 0.1%를 초과하는 경우 계정이 자동으로 검토 상태가 됩니다. CloudWatch 경보를 트리거하게 하는 반송 메일 또는 수신 거부 발생률을 지정하면 계정이 검토 상태가 되지 않도록 이러한 발생률보다 낮은 값을 사용하는 것이 좋습니다.
   + **작업**의 **이 경보가 발생할 경우 항상**에서 **상태가 ALARM입니다**를 선택합니다. **알림 보내기**에서 [4부: Amazon SNS 주제 생성 및 구독](#monitoring-sender-reputation-pausing-account-part-4)에서 생성한 Amazon SNS 주제를 선택합니다.

   **경보 생성**을 선택합니다.

## 6부: 솔루션 테스트
<a name="monitoring-sender-reputation-pausing-account-part-6"></a>

이제 경보를 테스트하여`ALARM` 상태로 전환될 때 Lambda 함수를 실행하는지 확인할 수 있습니다. `SetAlarmState` API 작업을 사용하여 경보의 상태를 일시적으로 변경할 수 있습니다.

이 섹션의 절차는 선택 사항이지만 전체 솔루션을 올바로 구성할 수 있도록 완료하는 것이 좋습니다.

1. 명령줄에 다음 명령을 입력하여 계정에 대한 이메일 전송 상태를 확인합니다. *region*을 리전의 이름으로 바꿉니다.

   ```
   aws ses get-account-sending-enabled --region region
   ```

   계정에 대해 전송이 활성화되어 있으면 다음 결과가 표시됩니다.

   ```
   {
       "Enabled": true 
   }
   ```

1. 명령줄에 다음 명령을 입력하여 경보 상태를 `ALARM`으로 임시 변경합니다. **aws cloudwatch set-alarm-state --alarm-name *MyAlarm* --state-value ALARM --state-reason "Testing execution of Lambda function" --region *region*** 

   위 명령에서 *MyAlarm*을 [5부: CloudWatch 경보를 생성하려면](#monitoring-sender-reputation-pausing-account-part-5) 섹션에서 생성한 경보의 이름으로 바꾸고, *region*을 이메일 전송을 자동으로 일시 중지하려는 리전으로 바꿉니다.
**참고**  
이 명령을 실행하면 경보의 상태가 `OK`에서 `ALARM`으로 바뀌고 몇 초 이내에 다시 `OK`로 바뀝니다. 이러한 상태 변경 사항은 CloudWatch 콘솔 내 경보의 **기록** 탭을 사용하거나 [DescribeAlarmHistory](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarmHistory.html) 작업을 사용합니다.

1. 명령줄에 다음 명령을 입력하여 계정에 대한 이메일 전송 상태를 확인합니다. 

   ```
   aws ses get-account-sending-enabled --region region
   ```

   Lambda 함수가 성공적으로 실행되면 다음 결과가 표시됩니다.

   ```
   {
       "Enabled": false
   }
   ```

1. [3부: 계정에 대한 이메일 전송 재활성화](#monitoring-sender-reputation-pausing-account-part-3)의 단계를 완료하여 계정에 대한 이메일 전송을 재활성화합니다.