リモート開発メインのソフトウェア開発企業のエンジニアブログです

[LocalStack]無料でAWSサービスを開発・テストする

AWSのサービスをローカルで利用できると聞いたので、空き時間に導入してみました。

LocalStackとは

LocalStackは、AWSの環境をローカルでエミュレートするツールです。クラウドに接続せずにAWSサービスの一部を利用して開発・テストができます。無料のCommunity版と有料版があり、Community版ではデータの保持がされず、Dockerコンテナを停止するとすべてのデータが削除されるようです。Community版でも商用利用が可能です。有料版ではより多くのAPIが使えます。

インストール方法

LocalStackは環境に合わせた複数のインストール方法があります。
https://docs.localstack.cloud/getting-started/installation/
①LocalStack CLI
 CLIだけでもLocalStack環境を作成できます。他のインストール方法を選択した場合でも、コマンドでLocalStackを操作する際に、このツールがあると便利です。
②LocalStack Desktop
 GUIで操作が行えます。詳しくは後述します。
③LocalStack Docker Extension
 Docker DesktopでLocalStackを操作できるようになります。Docker Desktop内のExtensionsからインストールします。
④Docker-Compose
 docker-compose.yamlでLocalStackコンテナの設定、他コンテナとの連携ができます。拡張性があり、扱いやすいため、こちらを今回は使います。
⑤Docker
 Docker CLIでもLocalStackコンテナを起動できます。
⑥Helm
 Kubernetes環境でLocalStackを動かせるようです。

導入手順

LocalStack CLIのインストール

いつものAWS CLIコマンドをawslocalに置き換えることで、同じ使い勝手で利用できるようになります。
AWS CLIコマンドでもLocalStackで実行できますが、その際はエンドポイントの指定が必要です。

LocalStack環境をクローン

docker-compose.ymlファイルがlocalstack直下に格納されていますので実行します。

docker-compose.ymlの内容です。

enviromentセクションでPERSISTENCE=1 を記述するとデータが永続化するらしいですが機能しませんでした。
データ永続化はどうやら有料版のみらしいですが、Community版でも対応方法あるようです。
https://github.com/localstack/localstack/issues/6281

コンテナが起動すれば、LocalStackの環境が完成です。次にAWSサービスを作成していきます。

AWSサービスの作成

LocalStackで利用できる無料サービスを確認します。

有料版では他に下記サービス等が利用できるようです。
https://docs.localstack.cloud/user-guide/aws/feature-coverage

試しにS3にファイルがアップロードされた際にLambda関数を起動させてみます。
LocalStackのコマンドでAWSサービスを作成する方法があるのですが一つずつ作成していくと面倒なので
CloudFormationを使用して一括でAWSリソースを作成します。

CloudFormationをLocalStack上にデプロイします。

各サービスが作成されているか確認します。

作成されてないと、空のオブジェクトが返ってきたり、エラーメッセージが表示されたりします。

Lambda関数の動作確認

ファイルをS3にアップロードし、Lambda関数が実行されるか確認します。

ClouldWatchを確認します。まずログストリーム名を確認します。

logStreamNameからログを取得します。

Lambda関数のコード内に仕込んだ”Test Lambda Event received”というログメッセージが、S3バケットへのPutObjectイベントによってトリガーされ、ログに表示されていることが確認できました。

Moba Pro

外部サービスとの連携

S3にデータを保持して起きたい場合には、MinIOというS3互換のストレージサービスが便利かと思います。
ローカル用のコンテナイメージが提供されています。

GUIでの表示

非営利目的ならデスクトップアプリケーションが利用できるようです。
https://docs.localstack.cloud/user-guide/tools/localstack-desktop/

まとめ

LocalStackを利用することでローカル環境にAWSサービスを作成し動作させることができました。LocalStackを導入することで、AWSクラウド上でしかテストできなかった開発環境が、ローカルでもテストできるようになるでしょう。AWSサービスが必要なために動作しなかったローカル開発環境も、LocalStackを使うことで動作するようになると思います。クラウドリソースとアプリケーションの連携をローカルで確認するのにLocalStackは非常に有用ではないでしょうか。
また、AWSの学習においても、費用やセキュリティを気にせずに利用できるのは便利だと思います。AWSの利用料を気にしていては、学習効率が上がりませんからね。学習目的であればLocalStack Desktopを活用するのも良いですね!

Tags

← 前の投稿

生成 AI に質問しまくってシステムを作ってみた

次の投稿 →

手を動かしてAPI取得の理解が深まった話

コメントを残す