1. LocalStackとは
AWSはクラウドサービスなのでもちろんインターネット経緯で利用いたしますが、 今回紹介するLocalStackを使うことでローカルに擬似的なAWS環境を作ってくれて、AWSサービスの開発/テストや動作確認をすることができます。
非常に簡単に構築できますし、もちろん料金もかかりません。
今回はWindows開発PC上にDockerで構築した手順についてメモを記載いたします。
2. 前提条件
- Windows10であること
- docker/docker-composeがインストールされていて利用できること
- Gitがインストールされていること
もしDockerがインストールされていない方は以下の記事を参考にどうぞ
https://syachiku.net/win10-20h2up/
3. LocalStackインストール&起動
適当なディレクトリでlocalstackリポジトリをもってきてから起動します。
ちなみに、Atlassian社もGithubで提供しているリポジトリもあるようです。(私は使ったことないです)
https://github.com/atlassian/localstack
> git clone https://github.com/localstack/localstack
> cd localstack
> docker-compose up -d
> docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------
localstack_main docker-entrypoint.sh Up 127.0.0.1:443->443/tcp, 127.0.0.1:4566->4566/tcp, 4567/tcp, 4568/tcp,
4569/tcp, 4570/tcp, 127.0.0.1:4571->4571/tcp, 4572/tcp, 4573/tcp,
4574/tcp, 4575/tcp, 4576/tcp, 4577/tcp, 4578/tcp, 4579/tcp, 4580/tcp,
4581/tcp, 4582/tcp, 4583/tcp, 4584/tcp, 4585/tcp, 4586/tcp, 4587/tcp,
4588/tcp, 4589/tcp, 4590/tcp, 4591/tcp, 4592/tcp, 4593/tcp, 4594/tcp,
4595/tcp, 4596/tcp, 4597/tcp, 127.0.0.1:53->53/tcp,
127.0.0.1:53->53/udp, 8080/tcp
こんな感じでポートが紐づけされてます。
- ちなみに、docker-compose.ymlは特に変更してないです。
version: "3.8"
services:
localstack:
container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
image: localstack/localstack
network_mode: bridge
ports:
- "127.0.0.1:53:53"
- "127.0.0.1:53:53/udp"
- "127.0.0.1:443:443"
- "127.0.0.1:4566:4566"
- "127.0.0.1:4571:4571"
environment:
- SERVICES=${SERVICES- }
- DEBUG=${DEBUG- }
- DATA_DIR=${DATA_DIR- }
- LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- }
- LOCALSTACK_API_KEY=${LOCALSTACK_API_KEY- }
- KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
- DOCKER_HOST=unix:///var/run/docker.sock
- HOST_TMP_FOLDER="${TMPDIR:-/tmp}/localstack"
volumes:
- "${TMPDIR:-/tmp}/localstack:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
4. AWS CLI設定
aws cliでlocalstack用のプロファイルを作成します。
C:\Docker\localstack>aws configure --profile=localstack
AWS Access Key ID [None]: dummy
AWS Secret Access Key [None]: dummy
Default region name [None]: ap-northeast-1
Default output format [None]: json
5. 動作確認
テストとしてS3バケットを作成して見ます。
> aws s3 mb s3://test-bucket --endpoint-url=http://localhost:4566 --profile localstack
make_bucket: test-bucket
> aws s3 ls --endpoint-url=http://localhost:4566 --profile localstack
20xx-xx-xx xx:xx:xx test-bucket
正しくバケットが作成されています。
6. まとめ
今回はLocalStackをつかってローカルにAWS開発環境を構築してみました。
実際にひとつづつリソースを構成する事もできますし、CloudFormtaion経由でLocalStack内にリソースを構成することもできます。
ただ、Webコンソールがないので全てAWS CLI経由での開発になるのは慣れるまで大変だと思います。。。
今私の環境ではcdklocalでのLocalStackへのDeployをして開発してます。かなり効率的になります。
今回は以上となります。
コメント