新年初ブログです。今年もよろしくお願いします。ことよろ。
ちなみに今年は雪山合宿に来ていて、そこでこれを書いている。
TL;DR
- S3互換のオブジェクトストレージminioというものがある
- Dockerで動かせる
- ローカル環境でS3を使う機能を動作確認したいときなどに便利
minio is 何
S3互換のオブジェクトストレージ。
Go言語で実装されているらしい。
ドキュメントはこちら。
仕事でS3を使う機能をローカル環境で動作確認したくなり、「S3 ローカル環境」とか検索したら出てきた。日本語の解説記事としてはClassmethodさんのものがある。
Dockerで使う
minioはGNU/Linux, MacOS, Windows, BSDなど幅広い環境にインストールすることができるが、今回は手軽に使いたいという気持ちでDockerによるインストールに触れる。Docker Hubのページはこちら。
仕事ではDjangoのアプリサーバーのコンテナと同時に立ち上げたため、ここではdocker-composeによる起動について書く。
version: '2' services: minio: image: minio/minio:latest container_name: my_minio ports: - "9000:9000" volumes: - ./data/minio:/data command: minio server /data environment: MINIO_SECRET_KEY: minioadmin MINIO_ACCESS_KEY: minioadmin
これをdocker-compose.ymlに書いて、$ docker-compose up
するだけで起動する。簡単。
environment
を指定することで任意の認証情報を設定できる。なお、minioadmin
は指定しない場合のデフォルト値。
起動して localhost:9000
(今回の場合)にアクセスするとログイン画面に遷移するので、認証情報を入れてログイン。
右下のボタンからバケット作成とファイルアップロードができる。
フォルダアイコンからパスを追加できる。
boto3からアクセスできる
S3互換ということでboto3からのアクセスもできる。そのため、S3を使う機能をローカル環境で動作確認したいときに便利、という話。boto3.client
のendpoint_url
にはローカルホストのアドレスを渡そう。
s3 = boto3.client( 's3', aws_access_key_id=settings.AWS_ACCESS_KEY_ID, # minioのACCESS_KEY aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY, # minioのSECRET_KEY endpoint_url='http://localhost:9000' )