Wasabi は Amazon S3 互換のオブジェクトストレージである。1TB までだいたい$5 という安さが魅力である。 しょっちゅう止まるが、us-west-1は比較的安定している印象。
特定バケットのみフルアクセスが可能な、コンソールアクセス権限なしのユーザを作る
-
https://console.wasabisys.com/に Root ユーザでログイン
-
バケット名を決める
ここでは supercoolimages.example.com とする ユーザ名もポリシー名もこれにする。 バケット名の命名規則はドメイン名と同じ。
- CREATE BUCKET
右上のところにある
Bucket Name: supercoolimages.example.com
Select Region: us-west-1
Bucket Versioning: お好み
Bucket Loggin: お好み
- CREATE POLICY
左上の三印の Menu の Policies にある
Policy Name
supercoolimages.example.com
以下の Poricy Document を書き換えて設定する。 supercoolimages.example.com のところをすべて先ほど設定したバケット名に置換することをわすれないこと。
Policy Document
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::supercoolimages.example.com"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::supercoolimages.example.com/*"
}
]
}
- CREATE USER
同上のメニューの Users にある
Details
Username: supercoolimages.example.com
Access: Programmatic
Groups
選択なし
Policies
Attach Policy To User: supercoolimages.example.com
Policies の割当時は、候補をクリックして、下部の「Policies that will be attached」に追加されていることを確認する。
作成後は Access Key と Secret Key をコピーしてメモしておく。Secret Key は Show をクリックすると閲覧できる。 この画面を閉じると Secret Key は再度参照できない。
- USER のパスの書き換え
Users List から supercoolimages.example.com を選択し、 Path を / から
/supercoolimages.example.com/
に変更する。
これで設定は完了。
この設定の Wasabi の S3 設定は、以下の通りとなる。 ポリシー設定によって他のバケットの一覧も表示できないので注意すること。
S3 Endpoint: https://s3.us-west-1.wasabisys.com/
S3 Region: us-west-1
S3 Bucket Name: supercoolimages.example.com
mastodonやmisskeyなど、アップロードど同時に公開したい場合は、以下のようなバケットポリシーを設定する必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::supercoolimages.example.com/*"
}
]
}
とても便利なアヒルさん
新規接続ではなく左下の+で追加
Amazon S3
ニックネーム: supercoolimages.example.com
サーバ: s3.us-west-1.wasabisys.com
アクセスキーID: Access Keyを設定
シークレットアクセスキー: Secret Keyを設定
パス: /supercoolimages.example.com
/
パスの設定は重要であるので忘れないこと。/ではエラーとなる。
インストール
$ sudo pip install awscli
$ sudo pip install awscli-plugin-endpoint
設定
$ aws configure --profile supercoolimages.example.com
AWS Access Key ID [None]: AAAAAAAAAAAAAAAAAAAA
AWS Secret Access Key [None]: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Default region name [None]: us-west-1
Default output format [None]:
$ vim ~/.aws/config
先頭に追加
[plugins]
endpoint = awscli_plugin_endpoint
endpoint_urlの設定
$ aws configure --profile supercoolimages.example.com set s3.endpoint_url https://s3.us-west-1.wasabisys.com
次の export AWS_DEFAULT_PROFILE はログインのたびに行う
$ export AWS_DEFAULT_PROFILE=supercoolimages.example.com
一覧
$ aws s3 ls s3://supercoolimages.example.com/
ローカルのhogeフォルダを同期し、Webから閲覧できるようにする。また、ローカルにないファイルは削除する。
$ aws s3 sync hoge s3://supercoolimages.example.com/hoge --delete --acl public-read
Go でできた s3cmd
設定
$ cat > s3cfg.conf << 'EOS'
[default]
access_key = AAAAAAAAAAAAAAAAAAAA
secret_key = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
host_base = s3.us-west-1.wasabisys.com
host_bucket = s3.us-west-1.wasabisys.com
EOS
ls
$ s3-cli -c ./s3cfg.conf -v ls s3://supercoolimages.example.com/