サブスクリプションの Amazon SNS デッドレターキューを設定する
デッドレターキューは、Amazon SNS サブスクリプションが受信者に正常に配信できないメッセージの送信先としての Amazon SQS キューです。クライアントエラーまたはサーバーエラーが原因で配信できないメッセージは、詳細な分析や再処理のためにデッドレターキューに保持されます。詳細については、Amazon SNS デッドレターキュー (DLQ) および Amazon SNS メッセージ配信の再試行 を参照してください。
このページは、AWS Management Console、AWS SDK、AWS CLI、および AWS CloudFormation を使用して Amazon SNS サブスクリプションのデッドレターキューを設定する方法を示しています。
前提条件
デッドレターキューを設定するには、次の前提条件を満たしている必要があります。
-
MyTopic
という名前で Amazon SNS トピックを作成する。 -
MyEndpoint
という名前で Amazon SQS キューを作成し、Amazon SNS サブスクリプションのエンドポイントとして使用します。 -
(AWS CloudFormation へスキップ) キューをトピックにサブスクライブします。
-
MyDeadLetterQueue
という名前で Amazon SQS キューを作成し、Amazon SNS サブスクリプションのデッドレターキューとして使用します。 -
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 サブスクリプションのデッドレターキューを設定するには
このチュートリアルを開始する前に、次の前提条件を完了してください。
-
Amazon SQS コンソール
にサインインします。 -
Amazon SQS キューを作成するか、既存のキューを使用して、キューの [詳細] タブでキューの ARN を確認します。次に例を示します。
arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue
注記 FIFO トピックでは、Amazon SNS サブスクリプションのデッドレターキューとして Amazon SQS FIFO キューを使用します。
Amazon SNS コンソール
にサインインします。 -
ナビゲーションパネルで、[サブスクリプション] を選択します。
-
[サブスクリプション] ページで、既存のサブスクリプションを選択し、[編集] を選択します。
-
[Edit
1234a567-bc89-012d-3e45-6fg7h890123i
] ページで、[再処理ポリシー (デッドレターキュー)] セクションを展開し、次の操作を行います。-
[有効] を選択します。
-
Amazon SQS キューの ARN を指定します。
-
-
[変更を保存] をクリックします。
デッドレターキューを使用するようにサブスクリプションが設定されます。
AWS SDK を使用して Amazon SNS サブスクリプションのデッドレターキューを設定するには
この例を実行する前に、必ずの前提条件を完了してください。
AWS SDK を使用するには、認証情報を使用して設定する必要があります。詳細については、『AWS SDK とツールのリファレンスガイド』の「共有設定ファイルおよび認証情報ファイル」を参照してください。
以下のコード例は、Amazon SNS サブスクリプションのデッドレターキューとして Amazon SQS キューを設定する方法を示します。
AWS CLI を使用して Amazon SNS サブスクリプションのデッドレターキューを設定するには
このチュートリアルを開始する前に、次の前提条件を完了してください。
-
AWS CLI をインストールして設定します。詳細については、「AWS Command Line Interface ユーザーガイド」を参照してください。
-
以下のコマンドを使用します。
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 サブスクリプションのデッドレターキューを設定するには
このチュートリアルを開始する前に、次の前提条件を完了してください。
-
次の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" } } } } }
-
AWS CloudFormation コンソール
にサインインします。 -
[テンプレートの選択] ページで、[テンプレートを Amazon S3 にアップロード] を選択した後、
MyDeadLetterQueue.json
ファイルを選択し、次に [次へ] を選びます。 -
[詳細の指定] ページで、[スタック名] に
MyDeadLetterQueue
を入力してから、[次へ] を選択します。 -
[オプション] ページで、[次へ] を選択します。
-
[Review] ページで、[作成] を選択します。
AWS CloudFormationは
MyDeadLetterQueue
スタックの作成を開始し、[CREATE_IN_PROGRESS] のステータスが表示されます。プロセスが完了すると、AWS CloudFormationに [CREATE_COMPLETE]ステータスが表示されます。