【Docker × LocalStack】AWS環境をローカルで再現する方法
はじめに
AWSを使った開発では、S3やSQS、Lambdaなど複数のサービスを連携させることがよくあります。
しかし、実際のAWS環境で動作を確認するには IAM設定や課金リスク が伴い、手軽に試すのが難しい側面があります。
そこで登場するのが LocalStack(ローカルスタック) です。
本記事では、LocalStackの基本的な仕組みと用途について整理します。
LocalStackとは
LocalStackは、AWSの主要サービスをローカル環境で再現できるオープンソースツールです。
簡単に言うと、Docker上で「AWSのミニチュア版」を動かすイメージです。
例えば以下のようなサービスを、クラウドではなく手元のPC上で動かすことができます:
| AWSサービス | LocalStackで再現できる |
|---|---|
| S3(ストレージ) | ✅ |
| SQS(メッセージキュー) | ✅ |
| Lambda(サーバーレス関数) | ✅ |
| DynamoDB(NoSQL DB) | ✅ |
| SNS(通知サービス) | ✅ |
なぜLocalStackを使うのか
開発環境でAWSを使うと、次のような課題があります。
- 実際のAWSアカウントが必要
- 権限設定(IAMロール)が面倒
- 間違えると課金リスクがある
- チーム開発でテスト環境を共有しづらい
LocalStackを使えば、これらをすべて回避できます。
| 項目 | LocalStackでのメリット |
|---|---|
| コスト | 無料版あり |
| 開発スピード | ローカルで即テスト可能 |
| 安全性 | 実環境に影響しない |
| 再現性 | Dockerで同じ環境を共有できる |
💡 LocalStackには無料版(Community Edition)と有料版(Pro)があります。
S3、SQS、Lambda、DynamoDBなど基本的なサービスは無料版で利用可能ですが、
一部の高度な機能やサービスはPro版が必要です。
動作のイメージ
[アプリケーション]
↓
LocalStack(ローカルAWS)
↓
Dockerコンテナ内でS3/SQS/Lambdaが動作
LocalStackはDockerコンテナとして起動し、AWS SDK(boto3など)を使って
endpoint_url=http://localhost:4566 にアクセスすることで通信できます。
つまり、AWSに接続するエンドポイントURLを変更するだけでローカルで動かすことができます。
環境構築
Dockerのインストール確認
Dockerがインストールされていることを確認します。
docker --version
# 出力例:Docker version 28.5.1, build e180ab8
Docker composeがインストールされていることを確認します。
docker-compose --version
# 出力例:Docker Compose version v2.40.2-desktop.1
AWS CLIのインストール確認
AWS CLIがインストールされていることを確認します。
aws --version
# 出力例:aws-cli/2.17.24 Python/3.11.9 Darwin/24.6.0 exe/x86_64
未インストールの場合は公式ドキュメントを参照してください。
LocalStackの起動
docker-compose.ymlを作成します。
services:
localstack:
image: localstack/localstack
ports:
- "4566:4566"
environment:
- SERVICES=s3,sqs,lambda
- DEBUG=1
volumes:
- "./volume:/var/lib/localstack"
以下のコマンドを実行して起動します。
docker-compose up -d
AWS CLIの設定
LocalStackでは認証情報はダミーで構いません。
aws configure
# AWS Access Key ID: test
# AWS Secret Access Key: test
# Default region: ap-northeast-1
実行例(S3の例)
DockerでLocalStackを起動したあと、AWS CLIを使って動作確認できます。
aws --endpoint-url=http://localhost:4566 s3 mb s3://test-bucket
# 出力: make_bucket: test-bucket
aws --endpoint-url=http://localhost:4566 s3 ls
# 出力: 2025-10-24 21:08:54 test-bucket
AWSアカウントを使わなくても、ローカル上でS3バケットの作成が確認できます。
よく使われる用途
- AWS Lambda × S3 × SQS のローカル開発
- ETL処理の動作確認(JSON → CSV変換など)
- CI環境(GitHub Actionsなど)での自動テスト
- チームでのローカル開発環境統一
おわりに
LocalStackは「AWS開発をローカルで完結させたい」ときに非常に便利なツールです。
AWS初心者でもDockerがインストールされていれば簡単に導入できるため、
「AWS学習の第一歩」や「チーム開発の検証環境」 としてもおすすめです。
本記事が参考になれば幸いです。
Discussion