Docker Desktop for Windows に LocalStack を組み込むには
Docker Desktop の新機能 Docker Extension で LocalStack を Docker Desktop に組み込めるようになりました。
LocalStackとは?
LocalStackは、クラウドベースのサービスをテストするためのローカル環境を提供するオープンソースのプロジェクトです。Amazon S3、DynamoDBなどの人気のあるクラウドサービスの振る舞いを模倣していますが、完全に開発者のマシン上で動作します。これにより、開発者は、費用がかかり時間がかかるライブクラウド環境に頼らずにアプリケーションをテストすることができます。
LocalStack Extension にできること
- LocalStackの起動・終了
- LocalStackインスタンスのログと各サービスのステータスを確認
- LocalStack設定プロファイルの管理と切り換え
LocalStack Extension にできないこと
- 各リソースの管理(作成、編集など)
導入方法
LocalStack Extension のインストール
awslocal コマンドのインストール
aws コマンドのインストール
$ sudo apt install awscli
$ aws --version
aws-cli/1.22.34 Python/3.10.6 Linux/5.15.79.1-microsoft-standard-WSL2 botocore/1.29.54
pip のインストール
$ sudo apt install pip
$ pip --version
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
awslocal のインストール
$ sudo pip install awscli-local
$ awslocal --version
aws-cli/1.22.34 Python/3.10.6 Linux/5.15.79.1-microsoft-standard-WSL2 botocore/1.29.54
LocalStackの起動・終了
起動
- Docker for Desktop の左メニューから LocalStack を選択
- 上部の Start ボタンを押す
- 起動完了するとダッシュボードに各サービスの利用状況が表示される
終了
上部の Stop ボタンを押す
CloudFormationの実行
試しにCloudFormationを実行してリソースを作成してみます。
aws
コマンドの代わりに awslocal
コマンドを使えばOKです。
$ awslocal cloudformation deploy --stack-name cfn-asg-stack --template-file "./cfn-asg.yaml"
Waiting for changeset to be created..
Waiting for stack create/update to complete
各サービスのステータスを確認
LocalStackダッシュボードで各サービスのステータスを確認できます。
awslocal cloudformation deploy
により、 cloudformation が running
になりました。
LocalStackインスタンスのログと各サービスのステータスを確認
**Logsタブを開くとインスタンスのログを表示できます。**これでリソースの作成状況など確認できます。
今回実行したCloudFormationの実行では LaunchTemplate は有償版でないと使えないことがわかりますね。
LocalStack設定プロファイルの管理と切り換え(Configurations)
Configurations タブで、LocalStackの起動プロファイルを管理できます。
複数のプロジェクトがあるとき、プロジェクト毎に使用するリソースを切り換えることが簡単にできますね。私は数社の案件を並行して進めているので、こうしてお客様毎に切り換えられるのは助かりますね。
- [Configurations] タブを開く
- [New +] ボタンを押す
- 名前と設定する環境変数を登録する(設定可能な環境変数一覧)
Configuration の利用
登録した Configuration は、LocalStack の [Start] ボタン横のドロップダウンリストから選択して使用することができます。
まとめ
LocalStack自体はかなり以前からありますが、今回Docker Desktopに組み込めるようになったことで利用の敷居が下がりそうですね。わかりやすい形で実行ログを表示できたり、起動プロファイルを管理できるのは便利です。
補足:LocalStack の無償版と有償版
有償ライセンスキーの有無で利用できるリソースが異なります。ガッツリAWSのリソースを使い込んで複雑なことをしようとすると有償版が必要になるでしょうか。単にS3バケットを使いたいだとか、Lambdaを実行したいとか、その程度の利用であれば無償版で十分対応できそうにみえますね。
Resources (Community Edition)
Resources (Pro / Enterprise Edition)
Discussion