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

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

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

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

前提条件

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

  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" } } }] }

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

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

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

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

    arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue
    注記

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

  3. Amazon SNS コンソールにサインインします。

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

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

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

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

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

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

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

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

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

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

以下のコード例は、Amazon SNS サブスクリプションのデッドレターキューとして Amazon SQS キューを設定する方法を示します。

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);

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

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

  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\"}"

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

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

  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] のステータスが表示されます。プロセスが完了すると、AWS CloudFormationに [CREATE_COMPLETE]ステータスが表示されます。