LocalStack に入門するべく 「LocalStack 実践入門 | AWS アプリケーション開発ワークショップ」をやってみた
LocalStack は、AWS のクラウドサービスをローカル環境でエミュレートできるツールです。今回は「LocalStack 実践入門 | AWS アプリケーション開発ワークショップ」をやってみて得た知見をまとめました。
やってみた結果
- ワークショップの所要時間は約 1 時間でした
- ハンズオン手順が丁寧で、行き詰まることなく完走できました
- LocalStack 上でのデプロイ速度が非常に速く、開発効率の向上が期待できる良い体験ができます
1 時間で終わることもあり、実際のところ残りの記事を読むよりも直接ワークショップに取り組む方がより多くの学びが得られると思うのですが、個人的に勉強になった点を紹介していきます。
ワークショップに取り組んだ動機
LocalStack の利用経験は、S3 のテストでしか触ったことがありませんでした。Lambda のローカルテストに興味はあったものの、学習の手間を避けて AWS 環境での実行に逃げていました。「いつかはローカルでテストを...」と思いつつ数年が経過しました。
Zenn で本ワークショップを見つけ、LocalStack を学ぶ良い機会だと考えやってみました。
ワークショップをやってみた
本記事で紹介するワークショップは以下のリンクで公開されています。
Chapter 01: ワークショップ環境をセットアップしよう
概要
GitHub Codespaces を使用して Web IDE 環境をセットアップし、LocalStack の実行環境を整えました。環境構築はコマンドを実行するだけで、すぐに実行環境が用意できました。
学んだ主要ポイント
- GitHub Codespaces の利用方法
- LocalStack の Web UI の存在と基本的な使い方
得られた知見
GitHub bodespaces を初めて利用しました。AWS のサービスでいうと Cloud 9 の様なもので無料でも利用できてなかなか良い体験でした。
あと、LocalStack には Web UI があり、AWS のマネージメントコンソールほどリッチではありませんが、リソースの確認が簡単にできることを知りました。
aws なんとか list
的なコマンドを使わずに作成したリソースを確認できて便利です。
Chapter 02: LocalStack を使ってみよう
概要
AWS CLI を使用して LocalStack 上で SQS を作成し、基本的な操作を学びました。
学んだ主要ポイント
- LocalStack 上での SQS 作成手順
awslocal
コマンドの使用方法
得られた知見
LocalStack 環境向けのawslocal
コマンドが提供されており、AWS CLI 操作を簡略化できることを知りました。
Chapter 03: Python コードで Amazon SQS と Amazon S3 を操作しよう
概要
AWS SDK(Boto3)を使用して、SQS と S3 のやりとりを行いました。AWS CLI で SQS にメッセージを送信し、Boto3 を使用してそのメッセージを取得し、S3 にファイルとして保存しました。
学んだ主要ポイント
- AWS CLI を使用した SQS メッセージの送信
- Boto3 を使用した SQS メッセージの受信と S3 へのファイルアップロード
得られた知見
ローカル環境で SQS と S3 を連携させた処理を簡単に実装できることを体験しました。
Chapter 04: AWS CloudFormation でデプロイを自動化しよう
概要
CloudFormation を使用して LocalStack 上にリソースをデプロイしました。作成済みの CloudFormation テンプレートを実行して、LocalStack 上で SQS と S3 バケットを作成しました。
学んだ主要ポイント
- LocalStack 上での CloudFormation デプロイ方法
得られた知見
LocalStack 上でのリソース作成(デプロイ)が高速で非常に良い体験でした。公式サイトの「コーヒーを取りに行く必要はない」という言葉通りの速さでした。
No need to go grab a cup of coffee waiting for your infrastructure to deploy, load a complete stack with all its data quickly.
LocalStack
Tips: 作成したリソースが画面に反映されない場合は、更新ボタンをクリックすると良いです。
Chapter 05: AWS SAM でサーバレスアプリケーションをデプロイしよう
概要
AWS SAM を使用して SQS、S3 に加えて、新たに Lambda 関数をデプロイしました。samlocal
コマンドを使用してデプロイを行いました。
学んだ主要ポイント
- LocalStack 上での Lambda 関数のデプロイ
samlocal
コマンドの使用方法
得られた知見
LocalStack 環境でも CloudWatch Logs を使用して Lambda の実行ログを確認できることを知りました。
ちゃんとログストリームが作成されています。
Chapter 06: 使い捨ての LocalStack で単体テストを実行しよう
概要
pytest を使用して LocalStack 環境で単体テストを実行しました。
学んだ主要ポイント
- イミュータブルな LocalStack 環境を使用した単体テストの実行方法
- pytest の基本的な使用方法
得られた知見
LocalStack 環境を使い捨てできるlocalstack-utils
の存在を知りました。これは非常に有用でした。
Chapter 07: Amazon API Gateway で API をデプロイしよう
概要
LocalStack 上で API Gateway を作成し、API を叩ける環境を構築しました。AWS SAM を使用して API Gateway + Lambda を作成し、LocalStack 上の API を叩きました。
学んだ主要ポイント
- API Gateway + Lambda を LocalStack 環境で実行する方法
- LocalStack 環境での API Gateway の API の叩き方
得られた知見
LocalStack 環境でも API Gateway と Lambda を連携させたサーバレスアプリケーションを構築できることを学びました。
感想と学び
- LocalStack を使用することで、AWS の各種サービスをローカルで簡単に試せました
- LocalStack 上のリソースのデプロイ速度が非常に速く、開発効率の向上が期待できました
- ハンズオン手順が丁寧で、迷うことなく完走できました
IaC の対応状況
LocalStack でも IaC ツール使えるのは便利だなと思い対応状況を調べてみました。CloudFormation、AWS SAM、AWS CDK、Terraform、Pulumi などの有名なツールは利用可能でした。
IaC のリソース作成テストにも便利に使えそうで、なによりデプロイ速度が早いためトライ&エラーが捗りそうです。ただし、Fargate などの AWS サービスを LocalStack で動かそうとすると有償契約が必要です。API Gateway + Lambda + DynamoDB のようなサーバレスアーキテクチャは無償で試せますが、多くのサービスはPro
版での利用となります。
キャプチャは一例ですがグレーアウトしているサービスがPro
版でないと利用できない AWS サービスです。
私はブログを書くための検証環境を IaC でデプロイするとき、「まぁ、こんな感じでいけるだろう」でデプロイして失敗して、各種リソースの作成・削除により AWS Config 代が無駄に嵩むをよくやらかします。サーバレスアーキテクチャであれば無償の範囲でローカルでテストできそうです。
Zenn の支払い体験は良き
付録(Chapter 08)だけが 200 円の課金コンテンツです。勉強になったという感謝の意と、Zenn の支払い方法を体験したことがなかったので経験のためにやってみました。クレジットカードを登録するだけでサクッと支払いが完了して良い体験でした。
おわりに
このワークショップを通じて、LocalStack の基本的な使い方と、AWS サービスのローカル開発における有用性を学びました。今後はもともと興味のあった Lambda のテストや GitHub Actions の実行など、LocalStack を活用できるように試してみます。