タイトル : AWS localstackを用意、upして、S3を少し試す localstackを試そう 2024
更新日 : 2024-11-13
カテゴリ : プログラミング
タグ :
aws   
awscli   

AWS localstackを試そう 2024

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 バケットの作成、設定、操作 より

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
$