こんにちは。2024年度に入社しました、PLAY CLOUD本部プラットフォーム技術部 開発第2グループ所属の成瀬です。 業務でAWS上にシステムを構築する機会があり、その開発において LocalStack を利用することで、失敗を恐れずに開発を進めることができました。 本記事では、LocalStack の使用方法と、Webブラウザから LocalStack 上のAWSリソースを管理できる「LocalStack Resource Browser」をご紹介します。ぜひ参考にしていただければと思います。
LocalStack とは
LocalStack とは、AWS環境をローカルでシミュレートできるツールです。開発やテストの際に、実際のAWS環境を使用せずに、主要なAWSサービスの挙動を確認することができます。 この記事では、LocalStack を使ってローカルAWS環境を簡単にセットアップする方法を紹介します。また、Web上から CloudWatch Logs や DynamoDB などを AWS Console のように操作できる LocalStack Resource Browser もあわせてご紹介します。
インストール
利用には公式が公開している Docker イメージを直接利用する方法と LocalStack CLI を利用する方法があります。今回は LocalStack CLI を利用して LocalStack 環境を作成しました。
インストール手順については、公式ドキュメントをご参照ください*1
インストールが完了したら、以下のコマンドで LocalStack を起動できます。
localstack start
実行すると、以下のような起動画面が表示されます
% localstack start [2025-05-28 21:16:59] __ _______ __ __ / / ____ _________ _/ / ___// /_____ ______/ /__ / / / __ \/ ___/ __ `/ /\__ \/ __/ __ `/ ___/ //_/ / /___/ /_/ / /__/ /_/ / /___/ / /_/ /_/ / /__/ ,< /_____/\____/\___/\__,_/_//____/\__/\__,_/\___/_/|_| - LocalStack CLI: 4.2.0 - Profile: default - App: https://app.localstack.cloud [21:17:04] starting LocalStack in Docker mode 🐳 localstack.py:512 ───────────────────────────────────── LocalStack Runtime Log (press CTRL-C to quit) ────────────────────────────────────── LocalStack version: 4.1.2.dev1 LocalStack build date: 2025-02-05 LocalStack build git hash: 7f32b7df3 Ready.
LocalStackへのデプロイ方法
LocalStack 環境にリソースを作成する方法としては、以下のような手段があります
- AWS CLIやawslocal コマンドを使って個別に作成
- SAM (Serverless Application Model) を使ったデプロイ
今回は、aws-sam-cli-local を使って、SAMテンプレートをLocalStackにデプロイする方法をご紹介します。
aws-sam-cli-local のインストール方法の詳細は、公式リポジトリをご確認ください。*2
デモ
今回は、以下の記事で紹介されているデモ用のSAMアプリケーションを LocalStack にデプロイしてみます。
デプロイ手順は以下の通りです
localstack start
で LocalStack環境を起動する- プロジェクトルートで以下のコマンドを実行して LocalStack にデプロイ
samlocal deploy --profile localstack --stack-name product-catalog-api --resolve-s3
デプロイが完了したら、API Gateway にアクセスして動作を確認します。以下の形式のURLでアクセスできます
http://localhost:4566/restapis/<apiId>/<stageId>/_user_request_/<path>
例えば、以下のようにアクセスできます
% curl http://localhost:4566/restapis/r2f9qyqjlk/Prod/_user_request_/products/123 [2025-05-28 21:27:22] {"message":"商品が見つかりません"}%
DynamoDBにまだレコードがないため、商品情報は返ってきませんが、Lambda からの正しいレスポンスが確認できました。
LocalStack Resource Browser
次に、LocalStack Resource Browser を使って、WebブラウザからDynamoDBにレコードを作成してみます(利用にはアカウント作成が必要です)。
- ダッシュボードにアクセスし、サイドメニューから「Resource Browser」を選択します。
- 管理可能なリソース一覧から「DynamoDB」を選択し、該当のテーブルを開きます(表示されない場合はRegion設定を確認してください)。
- 「Items」→「Create Item」から、レコードを作成できます。
- 作成したいレコードを記入して「Submit」し作成してください。
再度API Gatewayにアクセスしてレコードを確認してみます
% curl http://localhost:4566/restapis/r2f9qyqjlk/Prod/_user_request_/products/123 [2025-05-28 22:23:52] {"name":"スマートフォン","description":"最新モデルのスマートフォン","price":159800,"product_id":"123"}%
正しくレコードが作成され、Lambda経由でレスポンスを受け取れました。
なお、Resource Browser では、localhost に対してリクエストを行い LocalStack 上のデータを取得しており、通信はローカル内で完結しています。このため、データがインターネットに送信されることはありません。
注意点
- LocalStack と実際のAWS環境には差異がある場合があります。実際のAWS環境での検証は必ず行ってください。
- 利用可能なAWSリソースはライセンスによります。利用可能なサービスはこちらの表をご確認ください
- 無料版の LocalStack では、環境停止時にデータが消失します。S3 などのデータを永続化させて使いたい場合は、コンテナ起動時に都度データを作成するか、MinIO の利用も検討してください。
まとめ
LocalStackを活用することで、ローカル環境にAWS環境を再現でき、失敗を恐れずに安心して開発を進めることができます。 AWS学習や開発において、とても有用なツールですので、ぜひ試してみてください!