本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定訂閱的 Amazon SNS 無效字母佇列
無效字母佇列是一種 Amazon SQS 佇列,Amazon SNS 將它作為無法成功傳遞給訂閱者訊息的目標。由於用戶端錯誤或伺服器錯誤而無法傳遞的訊息,會保留在無效字母佇列,以供進一步分析或重新處理。如需詳細資訊,請參閱 Amazon SNS 無效字母佇列 和 Amazon SNS 訊息傳遞重試。
此頁面說明如何使用 AWS Management Console、 AWS 開發套件 AWS CLI、 和 AWS CloudFormation 來設定 Amazon SNS 訂閱的無效字母佇列。
注意
對於 FIFO 主題,您可以使用 Amazon SQS 佇列做為 Amazon SNS 訂閱的無效字母佇列。FIFO 主題訂閱使用 FIFO 佇列,而標準主題訂閱則使用標準佇列。
先決條件
設定無效字母佇列之前,請完成以下先決條件:
-
建立 Amazon SNS 主題,命名為
MyTopic
。 -
建立 Amazon SQS 佇列,命名為
MyEndpoint
,用來做為 Amazon SNS 訂閱的端點。 -
(Skip for AWS CloudFormation) 訂閱 主題的佇列。
-
建立另一個 Amazon SQS 佇列,命名為
MyDeadLetterQueue
,用作 Amazon SNS 訂閱的無效字母佇列。 -
若要授予 Amazon SNS 委託人對 Amazon SQS API 動作的存取權,請設定
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
開始本教學課程之前,請先完成下列先決條件。
-
請登入 Amazon SQS 主控台
。 -
建立 Amazon SQS 佇列或使用現有佇列,並記下佇列 Details (詳細資訊) 索引標籤上顯示的佇列 ARN,例如:
arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue
登入 Amazon SNS 主控台
。 -
在導覽面板上,選擇 Subscriptions (訂閱)。
-
在 Subscriptions (訂閱) 頁面上,選取現有訂閱,然後選擇 Edit (編輯)。
-
在 Edit
1234a567-bc89-012d-3e45-6fg7h890123i
(編輯 1234a567-bc89-012d-3e45-6fg7h890123i) 頁面上,展開 Redrive policy (dead-letter queue) (再驅動政策 (無效字母佇列)) 區段,然後執行下列動作:-
選擇 Enable (啟用)。
-
指定 Amazon SQS 佇列的 ARN。
-
-
選擇 Save changes (儲存變更)。
您的訂閱已設為使用無效字母佇列。
使用 AWS SDK 設定 Amazon SNS 訂閱的無效字母佇列
執行此範例之前,請確定您已完成先決條件。
若要使用 AWS SDK,您必須使用 登入資料進行設定。如需詳細資訊,請參閱 AWS SDK和工具參考指南中的共享的配置和認證文件。
下列程式碼範例示範如何使用 SetSubscriptionAttributesRedrivePolicy
。
使用 設定 Amazon SNS 訂閱的無效字母佇列 AWS CLI
開始本教學課程之前,請先完成下列先決條件。
-
安裝及設定 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\"}"
使用 設定 Amazon SNS 訂閱的無效字母佇列 AWS CloudFormation
開始本教學課程之前,請先完成下列先決條件。
-
將下列 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" } } } } }
-
在 Select Template (選擇範本) 頁面中,選擇 Upload a template to Amazon S3 (上傳範本至 Amazon S3)、選擇您的
MyDeadLetterQueue.json
檔案,再選擇 Next (下一步)。 -
在 Specify Details (指定詳細資訊) 頁面上,為 Stack Name (堆疊名稱) 輸入
MyDeadLetterQueue
,然後選擇 Next (下一步)。 -
在 Options (選項) 頁面上,選擇 Next (下一步)。
-
在 Review (檢閱) 頁面上,選擇 Create (建立)。
AWS CloudFormation 開始建立
MyDeadLetterQueue
堆疊,並顯示 CREATE_IN_PROGRESS 狀態。程序完成時, AWS CloudFormation 會顯示 CREATE_COMPLETE 狀態。