LocalStackでローカルでAWS疑似環境構築

2021年9月7日火曜日

docker localstack

t f B! P L
LocakStackを利用して料金気にせずにAWSの各種サービスがローカル環境で疑似的に利用できるようにしていきます。

LocalStackとは

開発環境においてAWSのサービスを擬似的に使用できるモックフレームワークです。
無料で使えるサービス、有料版でしか利用できないサービスは以下のgithubのページを参照してください。
https://github.com/localstack/localstack
ちなみに以下のlocalstackは古いものなので注意してください。
https://github.com/atlassian/localstack

AWS CLIのインストール

以下からインストーラをダウンロードしてインストールします。
https://awscli.amazonaws.com/AWSCLIV2.msi

aws cliのバージョン表示

コマンドプロンプトを立ち上げて、以下のコマンドと結果が表示されればインストール完了

aws --version
aws-cli/2.2.35 Python/3.8.8 Windows/10 exe/AMD64 prompt/off

LocalStack用のAWS設定

コマンドプロンプトを立ち上げて、以下のコマンドでProfileの設定を行います。
※C:\Users\[UserName]\.aws配下にconfigとcredentialsの2ファイルが生成されます。

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

docker-compose.ymlの作成

適当な場所にdocker-compose.ymlを作成し、以下の内容で設定します。

version: "3.8"

services:
  localstack:
    image: localstack/localstack
    container_name: 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=/tmp/localstack/data
      - 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=/tmp/localstack/tmp
      - LAMBDA_DOCKER_NETWORK=host
    volumes:
      - ./data/localstack:/tmp/localstack
      - /var/run/docker.sock:/var/run/docker.sock

LocalStackの起動

ひとまずエラーが発生しないことを確認しながら起動してみます。
※次回からはdocker-compose up -d でバックグラウンド実行

docker-compose up
Creating localstack_main ... done
Attaching to localstack_main
localstack_main | Waiting for all LocalStack services to be ready
...

S3のバケットを作成

挙動確認のためS3のバケットを作成してみます。

aws s3 mb s3://test-bucket --endpoint-url=http://localhost:4566 --profile=localstack
make_bucket: test-bucket

S3のバケット確認

上記で成功していますが、一応バケット一覧を表示してみます。

aws s3 ls --endpoint-url=http://localhost:4566 --profile=localstack
2021-09-08 01:15:58 test-bucket

※volumesでデータが永続化するように設定しているので、dockerを落としても作ったバケットは消えません。

以上です。

QooQ