3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

localstackを構築して、s3バケットを作成してみる

Posted at

localstackとは

localstackとは、AWSの主要なサービスをローカル環境でエミュレートできるサービスだよ。s3やDynamoDB、Lambda、SNS、SQSなどのサービスをインターネット接続なしで動作確認できるよ。

動作環境

  • Windows11
  • DockerDesktopインストール済み

作業内容

作業としては、以下の3ステップで完了するよ。

  • docker-compose.ymlの作成
  • AWS-CLIのインストール
  • credentialsの設定

では、実際にlocalstackを構築してみるよ。

docker-compose.ymlの作成

公式サイトのDocker-Composeでの起動手順を参考に起動するよ。ymlの内容は少しアレンジしているので、公式をみながらアレンジしてね。保存場所は任意のディレクトリでOK。

version: "3.8"

services:
  localstack:
    container_name: localstack
    image: localstack/localstack:latest
    ports:
      - "4566:4566" # LocalStack Gateway
      - "4510-4559:4510-4559" # external services port range
    environment:
      - DEFAULT_REGION=ap-northeast-1
      - DEBUG=1 # トラブルシューティングに役立つため、DEBUGログをonに設定

cmdで以下コマンドを実行し、起動するよ。

docker-compose up -d

AWS-CLIのインストール

AWS公式より、AWS-CLIのインストールを行ってね。

インストールが完了したら、以下コマンドでインストールの確認を行ってね。

aws --version

## 実行結果
aws-cli/1.37.16 Python/3.12.6 Windows/11 botocore/1.36.16

credentialsの設定

cliからLocalStackにアクセスするためにはまずcredentialsの設定が必要だよ。以下コマンドで設定出来るよ。

aws configure --profile localstack

credentialsの設定値は任意でOKで、今回は以下のように設定したよ。

AWS Access Key ID [None]: dummy
AWS Secret Access Key [None]: dummy
Default region name [None]: ap-northeast-1
Default output format [None]: json

バケットの作成をしてみる

次にs3のバケットを作成してみるよ。以下コマンドを実行してね。

# 作成コマンド
aws s3 mb s3://[任意の名前] --endpoint-url=http://localhost:4566 --profile localstack

# 実行結果
make_bucket: [任意の名前]

また、バケットの削除やアップロードのコマンドなども記載しておくよ。

# 削除コマンド
aws s3 rb s3://[削除したいバケット名] --force --endpoint-url=http://localhost:4566 --profile localstack

# s3バケット一覧
aws s3 ls --endpoint-url=http://localhost:4566 --profile localstack

# ファイルのアップロード
aws s3 cp [アップロードしたいファイル] s3://[アップロード先のバケット名] --endpoint-url=http://localhost:4566 --profile localstack

# アップロードできたかの確認
s3 ls s3://[アップロード先のバケット名]/ --endpoint-url=http://localhost:4566 --profile localstack

(参考)CORS設定

フロントエンドからファイルをダウンロード/アップロードする場合、CORS設定が必要なのでその備忘録を記載するよ。

任意のディレクトリに、cors-configuration.jsonを作成するよ。内容は、権限に合わせて作成してね。

{
    "CORSRules": [
        {
            "AllowedHeaders": ["*"],
            "AllowedMethods": ["GET", "PUT", "POST"],
            "AllowedOrigins": ["*"],
            "ExposeHeaders": [],
            "MaxAgeSeconds": 3000
        }
    ]
}

作成したファイルを、バケットに設定するよ。

aws --endpoint-url=http://localhost:4566 --profile localstack
s3api put-bucket-cors --bucket [設定したいバケット名] --cors-configuration file://cors-configuration.json 

設定が出来たかの確認を行うよ。

aws --endpoint-url=http://localhost:4566 --profile localstack s3api get-bucket-cors --bucket sample-bucket 

## 実行結果
{
    "CORSRules": [
        {
            "AllowedHeaders": [
                "*"
            ],
            "AllowedMethods": [
                "GET",
                "PUT",
                "POST"
            ],
            "AllowedOrigins": [
                "*"
            ],
            "MaxAgeSeconds": 3000
        }
    ]
}

以上でlocalstackでs3を作成する手順が完了したよ。お疲れ様でした!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?