Skip to content

Instantly share code, notes, and snippets.

@mamemomonga

mamemomonga/wasabi.md

Last active Mar 30, 2020
Embed
What would you like to do?
Wasabi メモ

Wasabi メモ

Wasabi は Amazon S3 互換のオブジェクトストレージである。1TB までだいたい$5 という安さが魅力である。 しょっちゅう止まるが、us-west-1は比較的安定している印象。

Wasabi の us-west-1 リージョンを使う

特定バケットのみフルアクセスが可能な、コンソールアクセス権限なしのユーザを作る

  1. https://console.wasabisys.com/に Root ユーザでログイン

  2. バケット名を決める

ここでは supercoolimages.example.com とする ユーザ名もポリシー名もこれにする。 バケット名の命名規則はドメイン名と同じ。

  1. CREATE BUCKET

右上のところにある

Bucket Name: supercoolimages.example.com
Select Region: us-west-1
Bucket Versioning: お好み
Bucket Loggin: お好み
  1. 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/*"
    }
  ]
}
  1. 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 は再度参照できない。

  1. 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/*"
    }
  ]
}

クライアント別設定例

Cyberduck

とても便利なアヒルさん

新規接続ではなく左下の+で追加

Amazon S3
ニックネーム: supercoolimages.example.com

サーバ: s3.us-west-1.wasabisys.com
アクセスキーID: Access Keyを設定
シークレットアクセスキー: Secret Keyを設定
パス: /supercoolimages.example.com

/

パスの設定は重要であるので忘れないこと。/ではエラーとなる。

awscli

インストール

$ 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

参考

s3-cli

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/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.