CLOVER🍀

That was when it all began.

LocalStackに保存するデータを永続化する

これは、なにをしたくて書いたもの?

LocalStackに保存したデータは、LocalStackを停止すると失われるようなので、永続化する方法はないのかな?ということで。

DATA_DIR環境変数を使えば良いみたいです。

環境

今回の環境は、こちら。

$ pip3 install localstack==0.12.17.5


$ localstack --version
0.12.17.5

LocalStackに保存するデータを永続化する

LocalStackに保存するデータを永続化するには、DATA_DIRを指定してLocalStackを起動します。

Dockerで起動する場合。

$ DATA_DIR=`pwd`/data localstack start

ホスト側で通常のプロセスとして起動する場合。

$ DATA_DIR=`pwd`/data localstack start --host

どちらの起動形態でも有効です。

起動形態をオプションで指定できるのは知らなかったですが、デフォルトはLocalStackのDockerコンテナをダウンロード
してきて起動します。

$ localstack start --help
Usage: localstack start [OPTIONS]

  Start LocalStack

Options:
  --docker  Start LocalStack in a docker container (default)
  --host    Start LocalStack directly on the host
  --help    Show this message and exit.

ホストにすると、最初の起動時にPythonのパッケージをダウンロードしてくるのですが、とても時間がかかるので
Dockerの方でいいかなと思います…。

ドキュメント的にもDockerを使う方が推奨なようですし。

Installation - LocalStack

なお、DATA_DIR環境変数についてはGitHubREADME.mdに記載があります。

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

DATA_DIR: Local directory for saving persistent data (currently only supported for these services: Kinesis, DynamoDB, Elasticsearch, S3, Secretsmanager, SSM, SQS, SNS). Set it to /tmp/localstack/data to enable persistence (/tmp/localstack is mounted into the Docker container), leave blank to disable persistence (default).

Kinesis、DynamoDB、Elasticsearch、S3、Secretsmanager、SSM、SQS、SNSのみですが、永続化できるようです。

デフォルトでは非永続化なのでLocalStackを再起動するとデータがなくなってしまいます、と。