オブジェクトストレージwasabiがアツい! aws cliからwasabiを使ってみよう!
■ Wasabi側の準備
こちらを参考に、以下の順序で作業しました。バケット名、ユーザー名ともに example.blogcube.info で作成します。
- wasabiのコンソールに Root ユーザでログイン
- バケット名を example.blogcube.info として作成する
- バケットのバージョニングはしない
- バケットのロギングはしない
- ポリシー名をバケット名と同じにして作成する
- ポリシーの中身は以下の通り
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example.blogcube.info" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::example.blogcube.info/*" } ] }
- Users / example.blogcube.info の「User Details」でPathを「/example.blogcube.info/」に変更する。
あとはアクセスキーとシークレットキーを控えておきましょう。
■ Ubuntu側の準備
aws-cliはaptからもインストールできますが、awscli-plugin-endpointを使いたいので、pipからインストールすることにします。すでにaptでaws-cliをインストールしている場合は、aptコマンドでremoveし、${HOME}/.aws ディレクトリを削除します。なお、この場合、awsコマンドのPATHが通ってしまっているので、一旦シェルから抜けましょう。
pipのインストール
最初にpipをインストールするのですが、pip3だけではうまくaws-cliをインストールできなかったのと、自分だけで利用する(他のユーザーを作成してもawsコマンドを個別に使わせたい)ので、最初にpython-pip と python3-pip の両方をインストールします。※ python-pip は不要でした。。。というかインストールできません。
sudo apt install python3-pip
ここまでがroot作業で、以降はsudoをつけずに自ユーザーで作業します。
awscliのインストール
pip3 install awscli pip3 install awscli-plugin-endpoint
awscli-plugin-endpoint をインストールすることで、aws以外のオブジェクトストレージも触ることができるようになります。
■ エンドポイントの設定
プロファイル名を任意に決めてプロファイルを設定します。
aws configure --profile example.blogcube.info
ここでアクセスキーとシークレットアクセスキーを入力、リージョンは us-west-1 にしてoutput formatは空エンターします。次に ${HOME}/.aws/config の先頭に以下を追記します。
[plugins] endpoint = awscli_plugin_endpoint
次に、endpoint_urlを設定します。
aws configure --profile example.blogcube.info set s3.endpoint_url https://s3.us-west-1.wasabisys.com
こうして出来上がった ${HOME}/.aws/config は以下になります。
[plugins] endpoint = awscli_plugin_endpoint [profile example.blogcube.info] region = us-west-1 s3 = endpoint_url = https://s3.us-west-1.wasabisys.com
次の export AWS_DEFAULT_PROFILE はシェルへログインのたびに行います。私は面倒なので、 ${HOME}/.bashrc の最下部に追記して、ログインのたびに環境変数設定をしないで済むようにしました。
export AWS_DEFAULT_PROFILE=example.blogcube.info
それでは手元のディレクトリを同期してみましょう。
aws s3 sync WORKDIR s3://example.blogcube.info/WORKDIR/
aws s3 ls s3://example.blogcube.info/ PRE WORKDIR/
aws s3 ls s3://example.blogcube.info/WORKDIR/ 2020-04-30 13:30:25 37812 WorkLog_20191225.txt 2020-04-30 13:30:25 4219 WorkLog_20191225.zip 2020-04-30 13:30:41 15889170 WorkLog_20200121.txt 2020-04-30 13:30:44 21181617 WorkLog_20200221.txt 2020-04-30 13:30:25 28569 WorkLog_20200309.zip 2020-04-30 13:30:25 50340 WorkLog_20200325.zip 2020-04-30 13:31:54 16285647 WorkLog_20200326.txt 2020-04-30 13:30:42 13526552 WorkLog_20200330.txt 2020-04-30 13:30:27 1149931 WorkLog_20200330.zip
アップロードされましたね。
■ wasabiを使ってみた感想とハマりどころ
1ヶ月近くwasabiを使ってみて思ったのが
- 安いねえ
- us-west、案外遅くないねえ
- aws cliから使うのが一番ラクちんですねえ
- エクスプローラーっぽくGUIから使いたいならFileZilla Proが捗るよ
- 他のGUIツールからはうまくAPI叩けなかった
- FileZilla Pro、OneDriveも対応してるから買っておいて損しない
でした。あと、ハマりどころとしては
- 長いファイル名 ディレクトリ名が苦手
- cliからコマンド叩いたときに出るエラーはたいてい長い名前
- オブジェクト数が増えたらページサイズ調整したほうがいい
- サブディレクトリまでrecursiveにlsするときとか
こんな感じで –page-size オプションつけてあげるとよいです。数字はエラーがでなくなるまで適宜調整します。
aws s3 ls s3://example.blogcube.info/ --recursive --human --sum --page-size 1000000
オブジェクト数と容量だけ見たいときはこうします。
time aws s3 ls s3://example.blogcube.info/ --recursive --human --sum --page-size 1000000 | egrep -v ^[0-9] Total Objects: 37295 Total Size: 979.5 GiB real 1m52.159s user 0m7.375s sys 0m1.109s
だいたい37000オブジェクト数、980GBくらいの容量であることが2分ほどかけてわかりました。軽率にバシバシとAPI呼べるあたりが精神衛生上よきですね。