はじめに
AWSのサービスをローカル環境で利用できる LocalStack を紹介したいと思います。
S3、Lambda、DynamoDB、SQSなど、AWSサービスをローカル環境で疑似的に利用できて、料金などを気にすることなくテストやコードの動作確認を行うことが出来ます。
目次
LocalStackとは
LocalStackとは、ローカル環境でAWSのサービスをエミュレートするフレームワークです。
pipやdockerを用いて簡単に環境構築が可能です。
LocalStackは無料版と有料版があり、無料版は利用できるAWSサービスに制限があったり、データが永続化できないといった違いがあります。
今回は LocalStack をインストールして S3,SQS を使ってみました。
インストールと起動
- awscli-localインストール
AWS CLI でも LocalStack 環境は操作できるのですが、毎回エンドポイントを指定する必要があったり少々手間なので、AWS CLIをLocalStack向けにラップした awslocal コマンドをインストールして使いました。
awslocal の場合
awslocal s3 mb s3://test-bucket1
AWS CLI の場合
aws s3 mb s3://test-bucket2 --endpoint-url=http://localhost:4566
- GitHub から LocalStack 環境をクローン
- docker-compose.ymlの作成
設定は公式ドキュメントを参考にしています。
- docker-composeで起動します
- AWSサービスの確認
available は使用可能な状態
running は使用中
これで、LocalStack の使用できる環境準備が出来ました。
S3 バケットにファイルアップロードしてみた
バケットを作成して、ファイルをアップロードしてみます。
- バケットの作成
- ファイルアップロードとバケット確認
SQS キューにメッセージを送信してみた
C#のサンプルコードで、作成したキューにメッセージの送受信をしてみます。
- キューの作成
- キューの確認
- キューにメッセージの送信と取得するサンプルコード(C#)
送信したメッセージと取得したメッセージを確認(コマンドで確認)
vscodeでコード実行時のコンソールのログを確認

データの永続化
無料版ではデータの永続化ができないので、ローカル環境で起動のたびに作成したリソースやデータが消えてしまいます。
起動のたびにリソースを作成したり、データを入れたりするのは面倒なので、初期化用のスクリプトを準備して、Dockerコンテナ起動時に自動で初期化するようにしました。
スクリプトは、/etc/localstack/init/ready.d
に配置します。
init-aws.sh
docker-compose.yml
まとめ
LocalStackを使うことで、AWS環境を自分のローカルで自由に使うことが出来ました。
無料版なので制限はありますが、環境構築前に先行してコードの開発が行えたり、ローカル環境なので料金も気にすることなく、自由に使うことは出来ると感じました。
投稿者プロフィール
-
2023/1にスカイアーチネットワークスにJoin
AWSを日々勉強中
最新の投稿
AWS2025年3月12日AWS Secrets Manager のクロスリージョンレプリケーションをやってみました
AWS2024年8月20日LocalStackをつかってローカル環境でAWSサービスにアクセスしてみた
AWS2024年4月4日AWS NeptuneにLambdaからアクセスしてみた
セキュリティ2024年3月4日Amazon GuardDutyについてまとめてみました