概要
AWS サービスの Mock ツール、LocalStack で Amazon SQS を使ってみました。
かんたんに扱えるので、ローカル環境での開発等に重宝しそうです。
github.com
Localstack の構築
いろんなやり方があるようですが、 docker-compose でやるのが楽そうです。
本家の docker-compose.yml
を適当なディレクトリに配置して起動します。
https://github.com/localstack/localstack/blob/master/docker-compose.yml
TMPDIR=/private$TMPDIR docker-compose up -d
Mac で起動する場合、 $TMPDIR
にシンボリックリンクが含まれており、 Docker でマウントできないため、書き換えて起動します。
起動に成功すると、ブラウザからリソースが確認できるようになります。
http://localhost:8080/
awscli-local の導入
localstack を操作しやすいように awscli-local を導入します。
github.com
awscli だけでも使えるんですが、 --endpoint-url をいちいち指定する必要がなくなります
pip install awscli-local
キューの作成
SQS に local-sqs-sandbox
という名前でキューを作成してみます。
awslocal sqs create-queue \
--queue-name local-sqs-sandbox
キューを作成するとブラウザからも確認できるようになっているはずです。
メッセージの登録
作成したキューにメッセージを登録してみます。
awslocal sqs send-message \
--queue-url http://localhost:4576/queue/local-sqs-sandbox \
--message-body "test localstack sqs"
登録後、取得してみるとメッセージが取得できます。
awslocal sqs receive-message \
--queue-url http://localhost:4576/queue/local-sqs-sandbox
もちろん削除もできます。 (ReceiptHandle は recieve すると分かります)
awslocal sqs delete-message \
--queue-url http://localhost:4576/queue/local-sqs-sandbox \
--receipt-handle "{ReceiptHandle}"
補足
docker-compose.yml
で環境変数をいじることで、起動するサービスを制限したり、Portを変更したりできます
- Localstack は一部サービスを除いて永続化に対応していないため、基本的に停止したらリソースはいなくなります