Docker + MinioでAWS S3の擬似ローカル環境構築

Docker, Programming, AWS01 December 2020

AWS S3のローカル開発環境を擬似的に用意できる「Minio」を使用してDockerで環境構築をします。

「Minio」を使用するとS3ライクなストレージが扱えます。

コンテナ作成

以下のdocker-compose.ymlを作り、コンテナを作成します。

version: '3'
services:
  minio:
    image: minio/minio:latest
    ports:
      - 19000:9000
    environment:
      MINIO_ACCESS_KEY: MINIO_ACCESS_KEY
      MINIO_SECRET_KEY: MINIO_SECRET_KEY
    command: server /export

dokcer-compose up -dで起動

docker-compose up -d

Minio用のアクセス情報を追加

AWSのアクセスキーとシークレットキー同様に、Minio用のものを設定します。

aws configure --profile minio
...

--profile minioのminioは任意の名前でOKです。(awsのプロファイル選択に使用するIDのようなもの)

AWS Access Key IDとAWS Secret Access Keyはdocker-compose.yml内で指定した値にしてください。

S3コマンドの実行

これで環境の準備は整ったのでS3のコマンドを実行します。

  • バケット作成
aws --endpoint-url http://127.0.0.1:19000 --profile minio s3 mb s3://first_bucket
  • オブジェクトのコピー
aws --endpoint-url http://127.0.0.1:19000 --profile minio s3 cp ./example.txt s3://first_bucket
  • オブジェクトの確認
aws --endpoint-url http://127.0.0.1:19000 --profile minio s3 ls s3://first_bucket

--endpoint:http://127.0.0.1:19000(ymlで指定したポート番号) --profile:上記aws configure --profileで指定した任意の名前

ブラウザで確認

最後にブラウザで確認してみます。

http://127.0.0.1:19000

上記にアクセスすると、Minioの管理画面が起動します。 IDとパスワードはymlにて指定したものを入力すればOKです。うまくいっていればバケットとアップロードしたオブジェクトが表示されます!!