2022/7/25にLocalStackが正式リリースされたと聞いて、早速導入してみました。
LocalStack 1.0の(個人的な)概要
- AWSのサービスをローカルで構築できるサービス
- LocalStackの全機能を使う場合は有料だが、一般的な機能は無料で使える
- v1.0未満はdocker-composeを使い、v1.0以降は専用のコマンドで起動する
- awsコマンド自体は互換性がある
この情報だけで面白そうです。
LocalStackの構築
※ 永続化設定は調査中です。この設定では終了すると内容が消えるので注意
環境
今回もVM上で設定していきます。
インストール
公式の手順を参考にインストールします。
1. 必要なパッケージのインストール
公式の説明通り、まずはDockerを入れてサービスを起動します。 (podmanを使う場合は公式ドキュメントに言及があります。)
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo dnf install -y docker-ce docker-ce-cli containerd.io $ sudo systemcrl start docker
LocalStackは非rootで起動する必要があるため、一般ユーザでdockerを実行できるよう設定します。
※ 設定を反映するため、設定後にログインし直しましょう。
sudo usermod -aG docker <ユーザ名>
LocalStackで使うPythonは、dnfで取得できるものを使います。
sudo dnf install python39
SELinuxは一旦permissiveにしておきます。(デバッグできる気がしないので)
$ sudo setenforce 0
これで起動に必要な環境は揃ったはずです。
2. LocalStackの起動
必要なパッケージはインストールできたので、LocalStack自体をインストールします。
入れるときはpip3でinstallするだけ。
pip3 install localstack
起動はlocalstackのコマンドを実行すればよし
$ localstack start -d
うまく起動できれば、こんな感じのメッセージが表示されてterminalに制御が戻ります。
__ _______ __ __ / / ____ _________ _/ / ___// /_____ ______/ /__ / / / __ \/ ___/ __ `/ /\__ \/ __/ __ `/ ___/ //_/ / /___/ /_/ / /__/ /_/ / /___/ / /_/ /_/ / /__/ ,< /_____/\____/\___/\__,_/_//____/\__/\__,_/\___/_/|_| 💻 LocalStack CLI 1.0.1 [07:41:48] starting LocalStack in Docker mode 🐳 localstack.py:140 preparing environment bootstrap.py:667 configuring container bootstrap.py:675 starting container bootstrap.py:681 [07:41:49] detaching bootstrap.py:685
せっかくなので、公式の資料に従って、サービスのステータス表示もしてみましょう。
$ localstack status services
正常であれば、このように一覧が表示されます。
━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ ┃ Service ┃ Status ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩ │ acm │ ✔ available │ │ apigateway │ ✔ available │ │ cloudformation │ ✔ available │ │ cloudwatch │ ✔ available │ │ config │ ✔ available │ │ dynamodb │ ✔ available │ │ dynamodbstreams │ ✔ available │ │ ec2 │ ✔ available │
3. awslocalパッケージをインストールする
無料版ではGUIが使えないようなので、ここからはCLIで設定を行っていきます。
LocalStackを使う際はローカルに特化したaws cliである、awslocalが便利です。
インストールはこのコマンド。
$ pip3 install awscli $ pip3 install awscli-local
動作確認にLambdaの一覧を表示してみます。
awslocal lambda list-functions
今は設定していないので、空の結果が返ってくるはずです。
{ "Functions": [] }
おわりに
非常にシンプルな手順でAWSのローカル環境が立つことが分かりました。
立て直しが非常にラクなので、お試しに構築するのに非常に便利そうです。
※ Serverlessの構築を行ってみましたが、記事が長くなってしまったので別に分けて公開しました。 →