

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

# 구독에 대한 Amazon SNS 배달 못한 편지 대기열 구성
<a name="sns-configure-dead-letter-queue"></a>

배달 못한 편지 대기열은 Amazon SNS 구독이 구독자에게 성공적으로 배달할 수 없는 메시지를 저장하는 Amazon SQS 대기열입니다. 클라이언트 오류 또는 서버 오류로 인해 배달할 수 없는 메시지는 추가 분석 또는 재처리를 위해 배달 못한 편지 대기열에 보관됩니다. 자세한 내용은 [Amazon SNS Dead Letter Queue(DLQ)](sns-dead-letter-queues.md) 및 [Amazon SNS 메시지 전송 재시도](sns-message-delivery-retries.md) 섹션을 참조하세요.

이 페이지에서는 AWS Management Console, AWS SDK, AWS CLI및를 사용하여 Amazon SNS 구독 CloudFormation 에 대한 배달 못한 편지 대기열을 구성하는 방법을 보여줍니다.

**참고**  
[FIFO 주제](sns-fifo-topics.md)의 경우 Amazon SQS 대기열을 Amazon SNS 구독에 대한 DLQ(Dead Letter Queue)로 사용할 수 있습니다. FIFO 주제 구독은 FIFO 대기열을 사용하고, 표준 주제 구독은 표준 대기열을 사용합니다.

## 사전 조건
<a name="dead-letter-queue-prerequisites"></a>

배달 못한 편지 대기열을 구성하려면 먼저 다음 사전 조건을 완료합니다.

1. `MyTopic`이라는 [Amazon SNS 주제 생성](sns-create-topic.md)

1. Amazon SNS 구독의 엔드포인트로 사용할 `MyEndpoint`이라는 [Amazon SQS 대기열을 생성](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html)합니다.

1. ( 건너뛰기 CloudFormation) [대기열에서 주제를 구독합니다](sns-sqs-as-subscriber.md).

1. Amazon SNS 구독의 배달 못한 편지 대기열로 사용할 `MyDeadLetterQueue`이라는 다른 [Amazon SQS 대기열을 생성](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html)합니다.

1. Amazon SNS 보안 주체에 Amazon SQS API 작업에 대한 액세스 권한을 부여하려면 `MyDeadLetterQueue`에 대해 다음 대기열 정책을 설정합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "sns.amazonaws.com"
         },
         "Action": "SQS:SendMessage",
         "Resource": "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue",
         "Condition": {
           "ArnEquals": {
             "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic"
           }
         }
       }
     ]
   }
   ```

------

## 를 사용하여 Amazon SNS 구독에 대한 배달 못한 편지 대기열을 구성하려면 AWS Management Console
<a name="configure-dead-letter-queue-aws-console"></a>

이 자습서를 시작하기 전에 [사전 조건](#dead-letter-queue-prerequisites)을 완료해야 합니다.

1. [Amazon SQS 콘솔](https://console.aws.amazon.com/sqs/)에 로그인합니다.

1. [Amazon SQS 대기열을 생성](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html)하거나 기존 대기열을 사용하여 대기열의 **세부 정보** 탭에서 대기열의 ARN을 확인합니다.

   ```
   arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue
   ```

1. [Amazon SNS 콘솔](https://console.aws.amazon.com/sns/home)에 로그인합니다.

1. 탐색 창에서 **구독**을 선택합니다.

1. [**구독**] 페이지에서 기존 구독을 선택한 다음 [**편집**]을 선택합니다.

1. **편집 *1234a567-bc89-012d-3e45-6fg7h890123i*** 페이지 에서 **리드라이브 정책(배달 못한 편지 대기열** 섹션을 확장하고 다음을 수행합니다.

   1. **활성**을 선택합니다.

   1. Amazon SQS 대기열의 ARN을 지정합니다.

1. **변경 사항 저장**을 선택합니다.

   구독이 배달 못한 편지 대기열을 사용하도록 구성됩니다.

## AWS SDK를 사용하여 Amazon SNS 구독에 대한 배달 못한 편지 대기열을 구성하려면
<a name="configure-dead-letter-queue-aws-sdk"></a>

이 예제를 실행하기 전에 [사전 조건](#dead-letter-queue-prerequisites)을 완료해야 합니다.

 AWS SDK를 사용하려면 자격 증명으로 구성해야 합니다. [자세한 정보는 *AWS SDK 및 도구 참조 가이드*의 공유 구성 및 자격 증명 파일](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)을 참조하세요.

다음 코드 예시에서는 `SetSubscriptionAttributesRedrivePolicy`를 사용하는 방법을 보여 줍니다.

------
#### [ Java ]

**SDK for Java 1.x**  
 GitHub에 더 많은 내용이 있습니다. [AWS 코드 예 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/java/example_code/sns#code-examples)에서 전체 예를 찾고 설정 및 실행하는 방법을 배워보세요.

```
// Specify the ARN of the Amazon SNS subscription.
String subscriptionArn =
    "arn:aws:sns:us-east-2:123456789012:MyEndpoint:1234a567-bc89-012d-3e45-6fg7h890123i";

// Specify the ARN of the Amazon SQS queue to use as a dead-letter queue.
String redrivePolicy =
    "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue\"}";

// Set the specified Amazon SQS queue as a dead-letter queue
// of the specified Amazon SNS subscription by setting the RedrivePolicy attribute.
SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest()
    .withSubscriptionArn(subscriptionArn)
    .withAttributeName("RedrivePolicy")
    .withAttributeValue(redrivePolicy);
sns.setSubscriptionAttributes(request);
```

------

## 를 사용하여 Amazon SNS 구독에 대한 배달 못한 편지 대기열을 구성하려면 AWS CLI
<a name="configure-dead-letter-queue-aws-cli"></a>

이 자습서를 시작하기 전에 [사전 조건](#dead-letter-queue-prerequisites)을 완료해야 합니다.

1.  AWS CLI를 설치하고 구성합니다. 자세한 정보는 [https://docs.aws.amazon.com/cli/latest/userguide/](https://docs.aws.amazon.com/cli/latest/userguide/)를 참조하세요.

1. 다음 명령을 사용합니다.

   ```
   aws sns set-subscription-attributes \
   --subscription-arn arn:aws:sns:us-east-2:123456789012:MyEndpoint:1234a567-bc89-012d-3e45-6fg7h890123i
   --attribute-name RedrivePolicy
   --attribute-value "{\"deadLetterTargetArn\": \"arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue\"}"
   ```

## 를 사용하여 Amazon SNS 구독에 대한 배달 못한 편지 대기열을 구성하려면 CloudFormation
<a name="configure-dead-letter-queue-aws-cloudformation"></a>

이 자습서를 시작하기 전에 [사전 조건](#dead-letter-queue-prerequisites)을 완료해야 합니다.

1. 다음 JSON 코드를 `MyDeadLetterQueue.json`이라는 파일에 복사합니다.

   ```
   {
     "Resources": {
       "mySubscription": {
         "Type" : "AWS::SNS::Subscription",
         "Properties" : {
           "Protocol": "sqs",
           "Endpoint": "arn:aws:sqs:us-east-2:123456789012:MyEndpoint",
           "TopicArn": "arn:aws:sns:us-east-2:123456789012:MyTopic",
           "RedrivePolicy": {
             "deadLetterTargetArn":
               "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue"
           }
         }
       }
     }
   }
   ```

1. [CloudFormation 콘솔](https://console.aws.amazon.com/cloudformation/)에 로그인합니다.

1. [**Select Template**] 페이지에서 [**Upload a template to Amazon S3**]를 선택하고, `MyDeadLetterQueue.json` 파일을 선택하고 나서 [**Next**]를 선택합니다.

1. **세부 정보 지정** 페이지에서 **스택 이름**에 `MyDeadLetterQueue`를 입력한 후 **다음**을 선택합니다.

1. **옵션** 페이지에서 **다음**을 선택합니다.

1. **검토** 페이지에서 **생성**을 선택합니다.

   CloudFormation 가 `MyDeadLetterQueue` 스택 생성을 시작하고 **CREATE\$1IN\$1PROGRESS** 상태를 표시합니다. 프로세스가 완료되면 **CREATE\$1COMPLETE** 상태가 CloudFormation 표시됩니다.