0
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?

More than 3 years have passed since last update.

MinIOを使ったAWS S3利用アプリのテストバケット・オブジェクトの準備

Last updated at Posted at 2020-10-24

追記: 空のバケットの事やゴミのことポリシー設定の事を考えると、やりたいことは、Minio (S3互換) で バージョン管理したデータを含めて永続化するでした(後で見つけた)。

目的

AWS S3を利用したアプリのローカルのデバッグのモックやユニットテストなどで、

  • バケットはすでにインフラ側の設定として準備されている
  • バケット内のオブジェクト/データは別処理が作成している

の様な構成の場合、MinIOのDockerコンテナーを使うのが良さそう。クライアント側からバケットを作り必要なデータをputするというのもあるかと思うが、コンテンテナー立上たら必要がデータが入っていてるのが便利かなぁと。

こちらのQiita記事 docker-composeでMinio起動時にデフォルトのbucketを作成する を参考にバケットの用意はできたが、テスト用のデータも仕込んでみた。

ディレクトリ構成

.
├── docker-compose.yml
├── entrypoint.sh
└── test_data
    ├── README.md             # テストデータの説明などを書いておく
    ├── foobucket             # テストデータ入りバケット
    |   ├── myobject1.csv
    |   └── myobject2.json
    └── barbucket             # 空バケットの準備はディレクトリだけ掘っておく

Docker Compose

エントリーポイントの差替え

参考にした記事の様にdocker-compose.ymlに展開して書いても良いのでしょうが、長くなるので別ファイルにした。この中で事前データを準備する。

内容的にはホスト側の./test_dataをさらってコンテナ側の/dataにMinIOが認識できる形にコピーしMinIO serverを立ち上げる。

#!/bin/sh

SRC=/test_data
DATA=/data

files=$SRC/*

for file in ${files}; do
  if [ -d ${file} ] ; then
    bucket=$(basename ${file})
    mkdir -p ${DATA}/${bucket}
    mkdir -p ${DATA}/.minio.sys/buckets/${bucket}
    cp -pr ${SRC}/${bucket}/ ${DATA}/
  fi
done

minio server /data

カスタムポリシーとかは不要だったので準備してませんが、リンク先の記事のようにpolicy.jsonって用意したほうが良いのかなぁ?

docker-compose.yml

version: "3"

services:
  minio:
    image: minio/minio:latest
    ports:
      - "9000:9000"
    volumes:
      # - ./srv/data:/data
      - ./test_data:/test_data:ro
      - ./entrypoint.sh:/entrypoint.sh
    entrypoint: sh
    command: /entrypoint.sh
    environment:
      MINIO_ACCESS_KEY: AKIAIOSFODNN7EXAMPLE
      MINIO_SECRET_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Dockerホスト側にデータを残すならコメントアウトを削除。

起動

$ docker-compose up -d && docker-compose logs -f

テスト

# 事前にAWS_PROFILEとか設定済みで
$ aws --endpoint-url http://localhost:9000 s3 ls
2020-10-24 20:28:10 barbucket
2020-10-24 20:28:10 foobucket
$ aws  --endpoint-url http://localhost:9000 s3 ls s3://foobucket
2020-10-24 20:21:30         11 myobject1.csv
2020-10-24 20:22:28         12 myobject2.json
$ aws s3 ls s3://barbucket --endpoint-url http://localhost:9000
$

実はまだ現物とは組み合わせてないですがデバッグ・テストに使用する予定。

0
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
0
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?