このページのトピック
Storage Stack Dead-letter Queue
Storage Stackで Lambda およびSNSの障害を監視および追跡する場合は、スタックを作成または更新するときに、次のようにパラメータを指定します。
- BucketListenerDLQARN:BucketListener機能の配信不能通知先のARN。
- PostScanActionTagDLQARN:ポストスキャン処理機能の配信不能メッセージ送信先のARN。
- ScanResultTopicDLQARN:検索結果トピックSNSの配信不能キューのARN。
- KMSKeyARNForDLQSSE: デッドレターキューのKMSマスターキーのARN。SQSでサーバ側の暗号化が有効になっていない場合は、空白のままにします。
配信不能送信先/キューとしてサポートされるのはSQSのみです。また、SQSは同じAWSアカウントを使用してデプロイし、 Storage Stackと同じ AWSリージョン に配置する必要があります。
前提条件
デッドレターキューを備えたStorage Stackを配置するには
-
SQSポリシーのアップデート
-
次のAWS CLIコマンドを入力します。
aws sqs get-queue-attributes --queue-url SQS-URL --attribute-names Policy --query Attributes > sqs-policy.json
ここで...
SQS-URL
は、デッドレターキューとして使用しているSQSのURLに置き換えられます。 -
sqs-policy.jsonを編集し、新しいStatementオブジェクトを挿入します。
{ "Sid": "Grant permission", "Effect": "Allow", "Principal": "*", "Action": "sqs:SendMessage", "Resource": "*" }
-
次のAWS CLIコマンドを入力します。
aws sqs set-queue-attributes --queue-url SQS-URL --attributes file://sqs-policy.json
SQS-URL
は、デッドレターキューとして使用しているSQSのURLに置き換えられます。
または、次のシェルスクリプトを実行します。
new_policy=$(aws sqs get-queue-attributes --queue-url SQS-URL --attribute-names Policy --query Attributes \ | jq '.Policy' -r \ | jq '.Statement[.Statement| length] |= . + {"Sid":"Grant permission","Effect":"Allow","Principal":{"AWS":"*"},"Action":"SQS:SendMessage","Resource":"*"}' -c) echo '{}' | jq --arg variable "$new_policy" '.Policy = $variable' > sqs-policy.json aws sqs set-queue-attributes --queue-url SQS-URL --attributes file://sqs-policy.json
SQS-URL
は、デッドレターキューとして使用しているSQSのURLに置き換えられます。 -
-
(オプション)DLQ暗号化を有効にする場合はKMSキーポリシーをアップデートする
-
次のAWS CLIコマンドを入力します。
aws kms get-key-policy --key-id KMS-MASTER-KEY-ARN-FOR-DLQ --policy-name default --output text > key-policy.json
ここで...
KMS-MASTER-KEY-ARN-FOR-DLQ
は、DLQ暗号化に使用したKMS鍵のARNに置き換えられます。 -
key-policy.jsonを編集し、新しい Statement オブジェクトを挿入します。
{ "Sid": "Grant sns permission", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
ここで...
BucketListenerRoleARN
Storage StackのbucketListenerのARNに置き換えられます。 -
次のAWS CLIコマンドを入力します。
aws kms put-key-policy --key-id KMS-MASTER-KEY-ARN-FOR-DLQ --policy-name default --policy file://key-policy.json
ここで...
KMS-MASTER-KEY-ARN-FOR-DLQ
は、DLQ暗号化に使用したKMS鍵のARNに置き換えられます。
-