タイトル : AWS localstackを用意、upして、S3を少し試す localstackを試そう 2024
更新日 : 2024-11-13
カテゴリ : プログラミング
localstackを用意して、upする
LocalStackを試してみた を参照
$ git clone https://github.com/localstack/localstack.git
Cloning into 'localstack'...
remote: Enumerating objects: 81654, done.
remote: Counting objects: 100% (11122/11122), done.
remote: Compressing objects: 100% (1540/1540), done.
remote: Total 81654 (delta 10240), reused 9881 (delta 9449), pack-reused 70532 (from 1)
Receiving objects: 100% (81654/81654), 48.76 MiB | 5.01 MiB/s, done.
Resolving deltas: 100% (61866/61866), done.
$ cd localstack/
$ ls
CODEOWNERS LICENSE.txt docker-compose-pro.yml pyproject.toml requirements-test.txt
CODE_OF_CONDUCT.md MANIFEST.in docker-compose.yml requirements-base-runtime.txt requirements-typehint.txt
DOCKER.md Makefile docs requirements-basic.txt scripts
Dockerfile README.md localstack-core requirements-dev.txt tests
Dockerfile.s3 bin mypy.ini requirements-runtime.txt
$
docker-compose.ymlはこんな感じ
version: "3.8"
services:
localstack:
container_name: "${LOCALSTACK_DOCKER_NAME:-localstack-main}"
image: localstack/localstack
ports:
- "127.0.0.1:4566:4566" # LocalStack Gateway
- "127.0.0.1:4510-4559:4510-4559" # external services port range
environment:
# LocalStack configuration: https://docs.localstack.cloud/references/configuration/
- DEBUG=${DEBUG:-0}
volumes:
- "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
upしてpsする
$ docker compose up -d
[+] Running 2/2
✔ Network localstack_default Created 0.1s
✔ Container localstack-main Started 1.2s
$ docker compose ps -a
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
localstack-main localstack/localstack "docker-entrypoint.sh" localstack 17 seconds ago Up 16 seconds (healthy) 127.0.0.1:4510-4559->4510-4559/tcp, 127.0.0.1:4566->4566/tcp, 5678/tcp
$
起動してますね。
S3を少し試す
S3(Amazon Simple Storage Service)をCLIで試しましょう。
S3をls
$ aws s3 ls --endpoint-url=http://localhost:4566 --profile localstack
$
endpoint-url、profileはコマンド指定時に手間なので、環境変数で設定します
export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_PROFILE=localstack
バケットを作成してみます。
$ aws s3 ls
$ aws s3 mb s3://sample-bucket-1
make_bucket: sample-bucket-1
$ aws s3 ls
2024-11-13 14:05:13 sample-bucket-1
$
Amazon S3 にデータを保存するには、バケットおよびオブジェクトと呼ばれるリソースを使用します。バケット とは、オブジェクトのコンテナのことです。オブジェクト とは、ファイルと、そのファイルを記述している任意のメタデータのことです。
作成したバケットにファイルをアップロード
$ aws s3 cp sample2.txt s3://sample-bucket-1 --acl public-read
upload: ./sample2.txt to s3://sample-bucket-1/sample2.txt
$ aws s3 ls
2024-11-13 14:05:13 sample-bucket-1
$ aws s3 ls s3://sample-bucket-1
2024-11-13 16:22:52 627 sample2.txt
$