SQS メッセージの Redrive (デッドレター再処理)¶
デッドレターキューからメッセージを受信し、元のキューに送信することで再処理をおこなうツールです。
全体の順序を揃えて再送信したい場合にも使用できるよう、受信と送信を分離しています。
制限¶
以下の条件でのみ使用できます。
- メッセージに改行が含まれないこと。
- 送信先キューは(FIFO でない)通常のキューであること。
手順¶
-
以下のスクリプトを用意する。
-
AWS SDK for Python (boto3) をインストールする。
shell pip install boto3
-
すべてのメッセージを読み出してテキストファイルに書き出す。
shell aws-sqs-receive.py \ --queue-name (デッドレターキュー名) \ > messages.txt
--delete
オプションを指定すると、読み出したメッセージを削除します。 FIFO キューの場合は削除しないと次のメッセージを取り出すことができないため必須です。shell aws-sqs-receive.py --delete \ --queue-name (デッドレターキュー名) \ > messages.txt
-
(必要に応じて) ソートする。
例)
shell sort messages.txt > messages-sorted.txt
-
テキストファイルからメッセージを送信する。
shell aws-sqs-send.py --wait (待ち時間(秒)) \ --queue-name (送信先のキュー名) \ < messages-sorted.txt