JAWS-UG 初心者支部#43 AWS Builders Online Series recap1 にて、織田さんが LT していた「S3について整理しよう 」とてもわかりやすくてよかったです。
よほどお金が S3 にかからない限り、考えるの大変だからそのまま S3 使いがちですね。
開発だったら LocalStack 使えばお金かからないので、試してみた備忘録です。
LocalStack
LocalStack を使うと疑似的な AWS 環境をローカルに作れるようです。
Docker で試す
DockerHub にイメージがあったので、これを利用します。
現時点の最新版は 0.13.3 なので、こちらを利用。
Docker Compose ファイル作成
Docker Compose で試すため docker-compose.yml
を作成。
version: "3" services: localstack: image: localstack/localstack:0.13.3 container_name: localstack ports: # LocalStack の AWS サービス - 4566:4566 environment: - DEFAULT_REGION=ap-northeast-1 - SERVICES=s3 - DATA_DIR=/tmp/localstack/data volumes: - localstack:/tmp/localstack/ volumes: localstack:
AWS ダミープロファイル作成
LocalStack 用の dummy の AWS プロファイルを準備。
$ cat >> ~/.aws/credentials << EOF [LocalStack] aws_access_key_id = dummy aws_secret_access_key = dummy EOF
$ cat >> ~/.aws/config << EOF [profile LocalStack] region = ap-northeast-1 output = json EOF
Docker 起動
Docker を起動。
$ docker-compose up -d
起動を確認。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5d918f216b8f localstack/localstack:0.13.3 "docker-entrypoint.sh" 12 minutes ago Up 12 minutes 4571/tcp, 0.0.0.0:4566->4566/tcp, 5678/tcp localstack
S3 アクセス
S3 コマンドを叩くときに --endpoint-url=http://localhost:4556
と、作成したプロファイルを指定 --profile LocalStack
すれば、操作可能。
$ aws s3 mb s3://sample --endpoint-url=http://localhost:4566 --profile LocalStack make_bucket: sample $ aws s3 cp ./sample.txt s3://sample/ --endpoint-url=http://localhost:4566 --profile LocalStack upload: ./sample.txt to s3://sample/sample.txt $ aws s3 ls s3://sample/ --endpoint-url=http://localhost:4566 --profile LocalStack 2022-02-02 20:35:45 7 sample.txt
Docker 終了
$ docker-compose down
ボリューム不要になったら後片付け。
$ docker volume ls DRIVER VOLUME NAME local localstack_localstack $ docker volume rm localstack_localstack localstack_localstack
所感
想像以上に簡単に試すことができました。