MinIO CLI(mcコマンド)でエイリアスが登録されているか確認する

$ mc --version mc version RELEASE.2023-12-02T11-24-10Z (commit-id=d920e2b34b22a15bca4cd081201d3b301c623d87) Runtime: go1.21.5 linux/amd64 Copyright (c) 2015-2023 MinIO, Inc. License GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html> MinIO CLI(mcコマンド)では、サーバーURLや認証情報などをmc alias setコマンドで保存して、 設定したエイリアスを使って操作します。 mc cpやmc mirrorでは、{alias}/{bucket}/{object}のように操作対象のオブジェクトを指定します。 このときaliasが登録されていなかった場合、ファイルシステム上の相対パスとして扱われるため、意図しない操作が行われるおそれがあります。 エイリアスmyaliasが登録されているかどうかは、mc alias list {alias}コマンドの終了コードで判別できます。 終了コードが0の場合、エイリアスは存在します。終了コードが1の場合、エイリアスは存在しません。 mc alias list myalias echo $? シェルスクリプトでは、以下のようなコードを追加して、エイリアスが存在しなかった場合にスクリプトを異常終了させられます。 # set +e # check alias exists mc alias list myalias >/dev/null 2>/dev/null if [ $? != 0 ]; then echo "Error: mc alias myalias does not exist" > /dev/stderr exit 1 fi # set -e

2023年12月9日 · aoirint

Use MinIO with AWS CLI

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でいじると必要だといわれるので付けておく ...

2022年6月10日 · aoirint