S3 互換の Wasabi を使う

はじめに

Wasabi – Cloud-based object storage service という AWS S3 互換のオブジェクトストレージを使い始めて3ヶ月以上が経ったので、使ってみた感想とかをまとめます。

2021-11-26追記

インターネット転送料金については、AWS のアップデートでちょっと状況が変わりました。

AWSのデータ転送無料枠が拡張されます。リージョンからの転送は月100GBまで無料、CloudFrontからの転送は月1TBまで無料に。 | DevelopersIO

個人で AWS S3 を使った時の課題

Wasabi を使う以前は、AWS S3 を使っていろいろなデータを管理していました。
バックアップや大容量データなどもあり、900GBぐらいデータがあります。
使っていくうちに、データ転送料と保管料金の課題がでてきて、それを解消したいと思っていました。

インターネット転送料金

これは S3 に限らず AWS 全般に言えることですが、インターネットへの転送(AWS→インターネット)にかかる料金は高めに設定されています。
1GBあたり、バージニア北部(us-east-1)なら$0.09、東京(ap-northeast-1)なら$0.114かかります。
$1=115円の前提で、10GB転送したとすると 0.114 * 115 * 10 = 131.1 で、だいたい131円ぐらいになります。

バックアップや大容量のデータを置いているので、ちょっとこのファイル取り出したいな、と思っても気軽にポンポン出していくとそれなりの金額を請求されてしまいます。
自分のデータなのに、気軽に使えないというのはちょっと不便だな〜、と思っていたのでここをなんとかしたいと思っていました。

保管料金

S3は複数のストレージクラスがあり、それぞれに保管料金が決められています。
800GBぐらいのデータを保管すると、それぞれ以下のような料金がかかります。

ストレージクラス 800GBを1ヶ月分保管した場合の料金($1=115円) メモ
S3標準 0.025 * 115 * 800 = 2,300円 高い
低頻度アクセス 0.019 * 115 * 800 = 1,748円 S3標準より安いがそれでも高い
Glacier Deep Archive 0.002 * 115 * 800 = 184円 安いが、取り出しに時間がかかる

Glacier Deep Archive は圧倒的に安いですが、取り出しに料金と時間がかかり、気軽には使いにくいです。
実際に Glacier Deep Archive を使っていたのですが、使いたい時にすぐ使えないのは私の用途的には不便でした。
そういうわけで、すぐ使えるが保管料金が安いサービスを探していました。

補足すると、Glacier Deep Archive が悪いわけではなく、私の用途にはあっていなかったという話です。
法的に保管を義務付けられているなど、必ず長期間保管する必要があるが、ほとんど使わないようなデータには最適だと思います。

Wasabi を知る

たぶん、この記事で Wasabi というサービスの存在を知りました。
ASCII.jp:Amazon S3互換の低価格ストレージを手がけるWasabiが日本進出

保管料金がS3標準より80%安く、データの耐久性も AWS S3 同等の 11×9(イレブンナイン)で、API リクエストやデータ転送料金が無料ということで、私の課題感を解消してくれそうでした。
調べてみると、サービス開始自体は2017年開始と(私が思ったよりも)古く、一定の信頼はできそうだな、とも感じました。

補足:その他のメジャーなサービス

Google Drive や Dropbox といったメジャーなオンラインストレージサービスも多々ありますが、今回は検討から除外しました。
理由としては、API を経由していろいろなことをやりたく、すでに S3 で作った資産をそのまま使いたいためです。
それぞれのサービスでどの程度のことができるかまでは調べていません。

Wasabi の特徴

Wasabi は AWS S3 のようなストレージクラスはありません。
料金体系もシンプルで、東京リージョンであれば 1TB あたり $6.99 で使用でき、それ以外の API リクエストやデータ転送料金はかかりません。
ただしいくつか制限があります。

まず Wasabi は最低1TB/月が課金されます。
つまり、東京リージョンであれば $6.99 は最低課金されます。

また、1オブジェクトあたり最低90日の保管が必要になります。
それより前に削除した場合は、90日から保管した期間を差し引いた料金が差し引かれます。
これは、上記の最低1TB/月とは別で請求されるので、気軽にアップロードと削除を繰り返すと想定外の料金が発生します。

このあたりがわかっていれば、割と使い勝手の良いストレージサービスだと私は思います。

実際に使ってみる

Wasabi は Web からの管理画面で色々操作することもできます。
ただ S3 互換なので、AWS が提供している CLI や SDK でも操作できます。

ここでは、Wasabi 固有の設定を説明します。

AWS CLI でアクセスする場合

--endpoint-url というオプションを指定することで Wasabi にアクセスすることができます。
例えば s3 sync する場合には、以下のコマンドでできます。

$ aws s3 sync "./" "s3://YOUR-BUCKET-NAME/PREFIX/" --endpoint-url=https://s3.ap-northeast-1.wasabisys.com

使い慣れた AWS CLI が簡単に使えるのは便利ですね。

詳しくはこちらのページもご覧ください。
Wasabi で AWS CLI を使用する方法 – Wasabi ナレッジベース

AWS SDK for JavaScript でアクセスする場合

AWS CLI と同じように、エンドポイントを個別に指定すればOKです。

const wasabi = new AWS.S3({ endpoint: new AWS.Endpoint("s3.ap-northeast-1.wasabisys.com") });

あとは通常と同じように、個別のメソッドを呼び出せばOKです。

wasabi.listObjectsV2({...})

詳しくはこちらのページもご覧ください。
How do I use AWS SDK for JavaScript with Wasabi? – Wasabi Knowledge Base

使ってみた感想

感想としては、結構いいと思いました。
AWS S3 よりも Wasabi の方が低コストで料金的に予測しやすく、使いやすい場合も多いと思います。
今回切り替えたことで、いつでも自分のデータに料金を気にせずすぐにアクセスできるようになって、非常に快適になりました。

ただし AWS が提供している他のサービスなどの親和性などの関係で、S3 を置き換える訳ではないとは思います。
また、あくまで私が個人的なデータの管理をする用途内での話なので、より多くの人が使うサービスなどで使うとデメリットも出てくるかもしれません。

それでも、用途によって有用な場面も多くあると思うので、選択肢の一つとして検討してみてもよいかと思いました。