PLAY DEVELOPERS BLOG

HuluやTVerなどの日本最大級の動画配信を支える株式会社PLAYが運営するテックブログです。

HuluやTVerなどの日本最大級の動画配信を支える株式会社PLAYが運営するテックブログです。

LocalStack を用いてローカルに AWS 環境を構築する

こんにちは。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 にデプロイしてみます。

developers.play.jp

デプロイ手順は以下の通りです

  1. localstack startで LocalStack環境を起動する
  2. プロジェクトルートで以下のコマンドを実行して 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にレコードを作成してみます(利用にはアカウント作成が必要です)。

  1. ダッシュボードにアクセスし、サイドメニューから「Resource Browser」を選択します。
  2. 管理可能なリソース一覧から「DynamoDB」を選択し、該当のテーブルを開きます(表示されない場合はRegion設定を確認してください)。
  3. 「Items」→「Create Item」から、レコードを作成できます。
  4. 作成したいレコードを記入して「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 の利用も検討してください。

developers.play.jp

まとめ

LocalStackを活用することで、ローカル環境にAWS環境を再現でき、失敗を恐れずに安心して開発を進めることができます。 AWS学習や開発において、とても有用なツールですので、ぜひ試してみてください!