LocalStackが正式リリースされたので試してみた(その1 セットアップ編)

2022/7/25にLocalStackが正式リリースされたと聞いて、早速導入してみました。

www.publickey1.jp

LocalStack 1.0の(個人的な)概要

  • AWSのサービスをローカルで構築できるサービス
  • LocalStackの全機能を使う場合は有料だが、一般的な機能は無料で使える
  • v1.0未満はdocker-composeを使い、v1.0以降は専用のコマンドで起動する
  • awsコマンド自体は互換性がある

この情報だけで面白そうです。

LocalStackの構築

※ 永続化設定は調査中です。この設定では終了すると内容が消えるので注意

環境

今回もVM上で設定していきます。

  • ホストOS: ESXi 7.0
  • ゲストOS: CentOS8 Stream
  • CPU: 4 vCPU (Ryzen 5600G)
  • RAM: 12GB
  • SSD: 120GB

インストール

公式の手順を参考にインストールします。

GitHub - localstack/localstack: 💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline!

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の構築を行ってみましたが、記事が長くなってしまったので別に分けて公開しました。 →

LocalStackが正式リリースされたので試してみた(その2 Serverless構築編) - cer12uのメモ