らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

WASABI のストレージ使用率を AWS CLI で確認する

wasabi のストレージ使用率を Web UI から確認しようとしたところ、以下のように Bucket size information is unavailable at this point in time. Sizes are calculated once daily. と表示されてしまいました。

f:id:sig9:20200506103145p:plain:w6000

しかし、AWS CLI であればいつでもストレージの使用率を確認することが出来ます。 但し、詳細は後述しますが --page-size オプションによって結果が異なる為、「凡そのサイズが分かる」(正確なサイズが分かるわけでは無い) と理解しておいた方が良さそうです。

AWS CLI の実行

以下のように実行します。

aws s3 ls s3://[BUCKET]/ --endpoint-url=https://s3.us-west-1.wasabisys.com --recursive --human --sum --page-size 10000

これで以下のように結果が表示されるはずです。

    ・
    ・
    ・
Total Objects: 7651
   Total Size: 606.1 GiB

.aws/config ファイルの設定

wasabi に限定した話ではありませんが、S3 のパフォーマンスを改善する為、.aws/config は以下のように設定してあります。 具体的な値は実行環境にあわせてチューニングしてください。

[default]
region = us-west-1
output = json
s3 =
    max_concurrent_requests = 100
    max_queue_size = 10000

--page-size オプションについて

以下のように --page-size オプション無しで実行します。

aws s3 ls s3://[BUCKET]/ --endpoint-url=https://s3.us-west-1.wasabisys.com --recursive --human --sum

すると、以下のようなエラーになってしまいました。 --page-size オプションを付与すればこのエラーを回避出来るようです。

Error during pagination: The same next token was received twice: {'ContinuationToken': ' (...snip...) '}

尚、AWS の公式ページ には --page-size オプションについて以下の記載がありました。

大量のリソースに対してリストコマンドを実行しているときに問題がある場合、1,000 というデフォルトのページサイズが高すぎる可能性があります。これにより、AWS サービスの呼び出しが最大許容時間を超えて、「タイムアウト」エラーを生成することがあります。--page-size オプションを使用して、AWS CLIAWS のサービスの 1 回の呼び出しで要求する項目数を少なくすることができます。その場合でも、CLI は完全なリストを取得しますが、多数のサービス API コールをバックグラウンドで実行し、1 回の呼び出しで取得する項目数が少なくなります。このため、個々の呼び出しがタイムアウトにならずに成功する可能性が高くなります。ページサイズを変更しても、出力には影響しません。出力を生成するために必要な API 呼び出しの数が変わるだけです。

--page-size オプションごとの結果

wasabi Bucket 上のファイル数やサイズは一切、変更無し」という条件下で --page-size の値を変化させながら実行した結果をメモしてみました。 今回の環境では --page-size に 7,260 を指定した場合が Total ObjectsTotal Size が共に最大となりました。 --page-size は「タイムアウトしない程度に全オブジェクト数より多ければ良い」というわけでも無いようです。

--page-size Total Objects Total Size
1000 (Error) (Error)
2000 (Error) (Error)
3000 (Error) (Error)
4000 7771 622.7
5000 7652 606.1
6000 7638 606
7000 9862 619.9
7100 9962 620.7
7200 10062 621.5
7250 10112 625.3
7260 10122 625.4
7261 7651 606.1
7262 7651 606.1
7263 7651 606.1
7264 7651 606.1
7265 7651 606.1
7270 7651 606.1
7280 7651 606.1
7290 7651 606.1
7300 7651 606.1
7400 7651 606.1
7500 7651 606.1
7600 7651 606.1
7700 7651 606.1
7800 7651 606.1
7900 7651 606.1
8000 7651 606.1
9000 7651 606.1
10000 7651 606.1

参考