🔖

【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