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

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

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

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

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

注記

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

前提条件

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

  1. という名前の Amazon SNSトピックを作成しますMyTopic

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

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

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

  5. Amazon SQSAPIアクションへのアクセスを 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. 編集時 1234a567-bc89-012d-3e45-6fg7h890123i ページを開き、Redrive ポリシー (デッドレターキュー) セクションを展開し、次の操作を行います。

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

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

  7. [Save changes] (変更の保存) をクリックします。

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

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

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

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

次の例は、SetSubscriptionAttributesRedrivePolicy を使用する方法を説明しています。

Java
SDK 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 を表示します。