サブスクリプションの Amazon SNS デッドレターキューを設定する - Amazon Simple Notification Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

サブスクリプションの Amazon SNS デッドレターキューを設定する

デッドレターキューは、Amazon SNS サブスクリプションが受信者に正常に配信できないメッセージの送信先としての Amazon SQS キューです。クライアントエラーまたはサーバーエラーが原因で配信できないメッセージは、詳細な分析や再処理のためにデッドレターキューに保持されます。詳細については、「Amazon SNS デッドレターキュー (DLQ)」および「Amazon SNS メッセージ配信の再試行」を参照してください。

このページでは AWS Management Console、、、、、を使用して Amazon SNS サブスクリプションのデッドレターキューを設定する方法を説明します。 AWS AWS CLI AWS CloudFormation

注記

FIFO トピックでは、Amazon SNS サブスクリプションのデッドレターキューとして Amazon SQS キューを使用できます。FIFO トピックサブスクリプションでは FIFO キューを使用し、標準トピックサブスクリプションでは標準キューを使用します。

前提条件

デッドレターキューを設定するには、次の前提条件を満たしている必要があります。

  1. MyTopic という名前で Amazon SNS トピックを作成する

  2. MyEndpoint という名前で Amazon SQS キューを作成し、Amazon SNS サブスクリプションのエンドポイントとして使用します。

  3. (スキップ用 AWS CloudFormation) キューをトピックにサブスクライブします

  4. MyDeadLetterQueue という名前で Amazon SQS キューを作成し、Amazon SNS サブスクリプションのデッドレターキューとして使用します。

  5. Amazon SQS API アクションへのアクセスを Amazon SNS プリンシパルに付与するには、MyDeadLetterQueue に次のキューポリシーを設定します。

    { "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

このチュートリアルを開始する前に、次の前提条件を完了してください。

  1. Amazon SQS コンソールにサインインします。

  2. Amazon SQS キューを作成するか、既存のキューを使用して、キューの [詳細] タブでキューの ARN を確認します。次に例を示します。

    arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue
  3. Amazon SNS コンソールにサインインします。

  4. ナビゲーションパネルで、[サブスクリプション] を選択します。

  5. [サブスクリプション] ページで、既存のサブスクリプションを選択し、[編集] を選択します。

  6. [Edit 1234a567-bc89-012d-3e45-6fg7h890123i] ページで、[再処理ポリシー (デッドレターキュー)] セクションを展開し、次の操作を行います。

    1. [有効] を選択します。

    2. Amazon SQS キューの ARN を指定します。

  7. [変更を保存] をクリックします。

    デッドレターキューを使用するようにサブスクリプションが設定されます。

SDK を使用して Amazon SNS サブスクリプションのデッドレターキューを設定するには AWS

この例を実行する前に、必ずの前提条件を完了してください。

AWS SDK を使用するには、認証情報を使用して設定する必要があります。詳細については、「AWS SDK とツールのリファレンスガイド」の「共有設定ファイルと認証情報ファイル」を参照してください。

次のコード例は使用方法を示していますSetSubscriptionAttributesRedrivePolicy

Java
SDK for Java 1.x
注記

にはまだまだあります GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

// 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

このチュートリアルを開始する前に、次の前提条件を完了してください。

  1. AWS CLIをインストールして設定します。詳細については、「AWS Command Line Interface ユーザーガイド」を参照してください。

  2. 以下のコマンドを使用します。

    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 サブスクリプションのデッドレターキューを設定するには AWS CloudFormation

このチュートリアルを開始する前に、次の前提条件を完了してください。

  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" } } } } }
  2. AWS CloudFormation コンソール にサインインします。

  3. [テンプレートの選択] ページで、[テンプレートを Amazon S3 にアップロード] を選択した後、MyDeadLetterQueue.json ファイルを選択し、次に [次へ] を選びます。

  4. [詳細の指定] ページで、[スタック名] に MyDeadLetterQueue を入力してから、[次へ] を選択します。

  5. [オプション] ページで、[次へ] を選択します。

  6. [Review] ページで、[作成] を選択します。

    AWS CloudFormation MyDeadLetterQueueスタックの作成を開始し、CREATE_IN_PROGRESS ステータスを表示します。プロセスが完了すると、CREATE_COMPLETE AWS CloudFormation ステータスが表示されます。