Localstack の SQS を使ってみる #AWS

概要

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

キューを作成するとブラウザからも確認できるようになっているはずです。

f:id:su-kun1899:20200426212920p:plain
こんな感じ

メッセージの登録

作成したキューにメッセージを登録してみます。

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 は一部サービスを除いて永続化に対応していないため、基本的に停止したらリソースはいなくなります