Amazon でデッドレターキューのリドライブを設定する方法について説明します。 SQS - Amazon Simple Queue Service

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

Amazon でデッドレターキューのリドライブを設定する方法について説明します。 SQS

デッドレターキューリドライブを使用して、未使用のメッセージを既存のデッドレターキューから移動できます。デフォルトでは、デッドレターキューのリドライブは、デッドレターキューからソースキューにメッセージを移動します。ただし、どちらのキューも同じタイプであれば、他のキューをリドライブの宛先として設定することもできます。例えば、デッドレターキューがFIFOキューの場合、リドライブ送信先キューもFIFOキューである必要があります。さらに、Amazon がメッセージSQSを移動する速度を設定するようにリドライブ速度を設定できます。

注記

メッセージがFIFOキューから FIFO に移動するとDLQ、元のメッセージの重複排除 ID は元のメッセージの ID に置き換えられます。これは、重複排除によって、重複DLQ排除 ID を共有する 2 つの独立したメッセージの保存が妨げられないようにするためです。

デッドレターキューは、最も古いメッセージから順にメッセージをリドライブします。ただし、宛先キューは、リドライブされたメッセージと他のプロデューサーからの新しいメッセージを、受信した順序に従って取り込みます。例えば、プロデューサーがデッドレターFIFOキューからリドライブされたメッセージを同時に受信するときにソースキューにメッセージを送信している場合、リドライブされたメッセージはプロデューサーからの新しいメッセージと交差します。

注記

リドライブタスクによって、保持期間がリセットされます。すべてのリドライブされたメッセージは、新しい を持つ新しいメッセージと見なmessageIDされenqueueTime、リドライブされたメッセージに割り当てられます。

Amazon を使用した既存の標準キューのデッドレターキューリドライブの設定 SQS API

デッドレターキューのリドライブはSendMessageBatch、、ReceiveMessage、および DeleteMessageBatchAPIアクションを使用して設定できます。

API アクション 説明

StartMessageMoveTask

指定されたソースキューから指定された送信先キューにメッセージを移動する非同期タスクを開始します。

ListMessageMoveTasks

特定のソースキューにある最新のメッセージ移動タスク (最大 10 個) を取得します。

CancelMessageMoveTask

指定されたメッセージ移動タスクをキャンセルします。メッセージの移動は、現在のステータスが の場合にのみキャンセルできますRUNNING。

Amazon SQSコンソールを使用して既存の標準キューのデッドレターキューリドライブを設定する

  1. で Amazon SQSコンソールを開きますhttps://console.aws.amazon.com/sqs/

  2. ナビゲーションペインで [Queues(キュー) ] を選択します。

  3. デッドレターキューとして設定されたキューの名前を選択します。

  4. DLQ リドライブの開始 を選択します。

  5. リドライブの設定に対してメッセージの送信先で、次のいずれかを実行します。

    • メッセージをソースキューに戻すには、ソースキューにリドライブを選択します。

    • メッセージを別のキューにリドライブするには、カスタム送信先にリドライブを選択します。次に、既存の送信先キューの Amazon リソースネーム (ARN) を入力します。

  6. Velocityコントロール設定で、次のいずれかを選択します。

    • システム最適化-デッドレターキューメッセージを1秒につき最大メッセージ数でリドライブします。

    • カスタム最大 velocity-1秒につきカスタム最大メッセージ数でデッドレターキューメッセージをリドライブします。許可される最大レートは1秒に500 メッセージです。

      • カスタム最大速度を小さい値から始めて、ソースキューがメッセージでいっぱいにならないことを確認することをお勧めします。そこから、ソースキューの状態を引き続き監視しながら、カスタム最大速度の値を徐々に上げていきます。

  7. デッドレターキューリドライブの設定が完了したら、メッセージをリドライブするを選択します。

    重要

    Amazon SQSは、デッドレターキューからメッセージを再配信する際のメッセージのフィルタリングと変更をサポートしていません。

    デッドレターキューのリドライブタスクは、最大36時間実行できます。Amazon は、アカウントあたり最大 100 個のアクティブなリドライブタスクSQSをサポートします。

  8. メッセージリドライブタスクをキャンセルする場合は、キューの詳細ページで、DLQリドライブをキャンセルを選択します。進行中のメッセージのリドライブをキャンセルすると、移動先キューにすでに正常に移動されたメッセージは、移動先キューに残ります。

デッドレターキューリドライブのキューアクセス許可を設定

ポリシーにアクセス許可を追加することで、ユーザーに特定のデッドレターキューアクションへのアクセスを許可できます。デッドレターキューリドライブに最低限必要なアクセス許可は次のとおりです。

最小限必要なアクセス権限 必要なAPIメソッド
メッセージのリドライブを開始するには
  • デッドレターキューの sqs:StartMessageMoveTasksqs:ReceiveMessagesqs:DeleteMessagesqs:GetQueueAttributes を追加します。デッドレターキューが暗号化されている場合 (SSEキューとも呼ばれます)、メッセージの暗号化に使用されるすべてのKMSキーに対するkms:Decryptアクセス許可も必要です。

  • 送信先キュー sqs:SendMessage を追加します。送信先キューが暗号化されている場合は、 kms:GenerateDataKey も必要です。

進行中のメッセージのリドライブをキャンセルするには
  • デッドレターキューの sqs:CancelMessageMoveTasksqs:ReceiveMessagesqs:DeleteMessagesqs:GetQueueAttributes を追加します。デッドレターキューが暗号化されている場合 (SSEキューとも呼ばれます)、 kms:Decrypt も必要です。

メッセージの移動状況を表示するには
  • デッドレターキューの sqs:ListMessageMoveTaskssqs:GetQueueAttributes を追加します。

暗号化されたキューペア (デッドレターキューのあるソースキュー) のアクセス許可を設定するには

次の手順を使用して、デッドレターキューリドライブの最小限のアクセス許可を設定します。

  1. にサインイン AWS Management Console し、 でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  2. ナビゲーションペインで、ポリシー を選択します。

  3. 次のアクセス許可を持つポリシーを作成し、ログインIAMユーザーまたはロール にアタッチします。

    • sqs:StartMessageMoveTask

    • sqs:CancelMessageMoveTask

    • sqs:ListMessageMoveTasks

    • sqs:ListDeadLetterSourceQueues

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • デッドレターキューResourceARNの (例:「arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>").

    • sqs:SendMessage

    • 送信先キューResourceARNの (例:「arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>").

    • kms:Decrypt — 復号アクションを許可します。

    • kms:GenerateDataKey

    • 元のソースキュー内のメッセージをKMS暗号化するために使用された暗号化キーの Resource ARN(s) (例: "arn:aws:kms:<region>:<accountId>:key/<keyId_used to encrypt the message body>").

    • リドライブ送信先キューに使用されるKMS暗号化キーARNのリソース (例:「arn:aws:kms:<region>:<accountId>:key/<keyId_used for the destination queue>").

    アクセスポリシーは以下のようになります。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:StartMessageMoveTask", "sqs:CancelMessageMoveTask", "sqs:ListMessageMoveTasks", "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:ListDeadLetterSourceQueues" ], "Resource": "arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>" }, { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:<region>:<accountId>:key/<keyId_used to encrypt the message body>" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:<region>:<accountId>:key/<keyId_used for the destination queue>" } ] }
暗号化されていないキューペア (デッドレターキューのあるソースキュー) を使用してアクセス許可を設定するには

次の手順を使用して、暗号化されていない標準的なデッドレターキューの最小限のアクセス許可を設定します。最低限必要なアクセス許可は、デッドレターキューからの属性の受信、削除、取得、およびソースキューへの属性の送信です。

  1. にサインイン AWS Management Console し、 でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  2. ナビゲーションペインで、ポリシー を選択します。

  3. 次のアクセス許可を持つポリシーを作成し、ログインIAMユーザーまたはロール にアタッチします。

    • sqs:StartMessageMoveTask

    • sqs:CancelMessageMoveTask

    • sqs:ListMessageMoveTasks

    • sqs:ListDeadLetterSourceQueues

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • デッドレターキューResourceARNの (例:「arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>") .

    • sqs:SendMessage

    • 送信先キューResourceARNの (例:「arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>").

    アクセスポリシーは以下のようになります。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:StartMessageMoveTask", "sqs:CancelMessageMoveTask", "sqs:ListMessageMoveTasks", "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:ListDeadLetterSourceQueues" ], "Resource": "arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>" }, { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>" } ] }