目次
このページのトピック

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に置き換えられます。