SQSのメッセージを別のSQSへ転送するCLIツール sqstransfer をRustで作りました

SQSのメッセージを別のSQSへ転送するCLIツールを作って、crates.ioに公開しました。

https://crates.io/crates/sqstransfer

GitHubでバイナリを公開してます。

github.com

使い方

こちらから自身の環境にあったバイナリをダウンロードいただくか、または、cargoでインストールできます。

$ cargo install sqstransfer

AWSの環境変数 (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION) を設定していれば、あとはコマンド1発で転送できます。

$ sqstransfer \
  --source https://sqs.us-west-2.amazonaws.com/123456789012/your-sqs-dlq \ 
  --destination https://sqs.us-west-2.amazonaws.com/123456789012/your-sqs

制約

依存しているrusoto 0.42.0の不具合で、メッセージごとに付与できる属性情報は転送できません。
rusotoにbugfix PRを送ってマージしていただいたので、0.43.0から解消されています。 (まだバージョンアップできてませんが...)

モチベーション

AWSでサービス運用しているとたびたび発生する "デッドレターキューから元のキューへ戻す" という作業をコマンド1発で行いたかったので作りました。

  • このツール自体はデッドレターキュー以外にも使えます

他の言語と比較してCLIツールへの適用に適している言語だと思い、Rustを選択しました。

  • Rustならバイナリパッケージを簡単に作れ、環境ごとにクロスコンパイルできる
  • cargoがインストールされていれば、インストールもコマンド1発

ぜひ使ってみてください。