AWS S3互換を意識して、設定にあたってMinIOに依存しすぎないようにしたい (それはそれとしてMinIO ClientはAWS S3互換クライアントとして便利らしい)
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
aws-cli version: 2.7.7
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install https://awscli.amazonaws.com/v2/documentation/api/latest/reference/index.html --endpoint-urlで操作対象をAWS S3からMinIOに変更できる
https://awscli.amazonaws.com/v2/documentation/api/latest/topic/config-vars.html AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS以外の認証情報を~/.aws/credentialsに保持するのもいまいちな感があるので、環境変数に設定することにする
(AWSのIAM?がどうなってるのかよくわからんけど、本来マニュアルオペレーションするときはAWSのアカウントで認証するのかな?)
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-s3-commands.html まずは特権アクセスでBucketを作る
MinIOのrootユーザのユーザ名・パスワードを設定する(MINIO_ROOT_USER、MINIO_ROOT_PASSWORD)
export AWS_ACCESS_KEY_ID=minioadmin export AWS_SECRET_ACCESS_KEY=minioadmin Bucket一覧
aws --endpoint-url http://127.0.0.1:9000 s3 ls Bucket作成(create-bucketも大して変わらんと思うので、あえて高レベルAPIのs3 mbを使わなくていい気もするけどまあいいでしょう)
aws --endpoint-url http://127.0.0.1:9000 s3 mb s3://mybucket アクセス制御(Policy)周りはS3と一部互換性がない
Policyの構文自体はほぼ同じに作られているけれど、仕様が違うように思われる(AWS S3の仕様をよく知らんけど)
https://github.com/minio/minio/issues/9530#issuecomment-625883667 Bucket policyはパブリックアクセスのルール、User/ServiceAccount Policyは認証付きルールと使い分ければいいと思われる
Bucket policyはAWS S3互換APIから設定できる
User/ServiceAccount PolicyはAWS互換APIから設定できないのでWeb UIまたはMinIO Clientから設定する
Bucket policy: allow anonymous user (public) to read mybucket/*
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mybucket/*" ] } ] } PrincipalはMinIO上のBucketとしては意味がないと思うが、Web Consoleでいじると必要だといわれるので付けておく
...