AWSIaCPython

LocalStackをつかってローカルにAWS開発環境を構築してみた

AWS

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をして開発してます。かなり効率的になります。

今回は以上となります。

コメント