AWSを使って開発するときに、開発環境はローカルに配置して気軽に実行したいので、LocalStackを構築してみました。起動方法はいくつかるようですが、すでにデータベースなどをdockerで立ち上げているので、dockerを使ってLocalStackを動かします。
インストール
ドキュメントにはgitのリポジトリをローカルにcloneするように書いてありますが、リポジトリ全体が必要はなく、docker-compose.ymlさえあればいいので、それをローカルにコピーします。本当に必要なのは、そのファイルの中のservicesのlocalstackのところだけですね。
起動
docker-compose up -d
で起動します。Macの場合は
TMPDIR=/private$TMPDIR docker-compose up -d
とします。
AWSのコマンドのインストール
ついでにawsのコマンドをインストールします。pyenvとpyenv-vertialenvがインストールされている前提で話します。
pyenv virtualenv 3.6.2 aws
pyenv shell aws
次にawsの設定を行います。
aws configure
これで4つの情報を聞いてくるので、こんな感じで入力します。
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
これを設定しておかないと動かないので、適当に入力しておけばいいみたいです。
動作確認
あとは、「LocalStackをつかってローカルでLambdaを実行してみた」に書いてあるように、Lambdaを動かして動作確認します。
おわり
これで動作確認が終わりです。でも、ダッシュボードが8080のポートを使っていますが、dockerのイメージをそのまま使っている限りだと、このポートを変更することはできないようです。自分の開発中のものが8080を使っていると悲しいですね。