AWS の料金がここ数か月だんだん増えていました。円安のせいかなと思って過去の明細も調べてみたところ、ドル建てでも増えていました。結論として AWS S3 の非現行バージョンが溜まっていって課金が増えていたのですが、もしかしたら同様の方もいらっしゃるかもしれないので顛末をまとめておきます。
料金の様子
2021年11月までは 1 USD 前後だった S3 の料金が12月以降は増加し、2022年4月時点では 3 USD を超えてしまいました。なお、S3 の料金よりも EC2 の方が高いですが、こちらは用途を把握しているものなので問題ありません。
S3 の用途
S3 はいくつかの用途で使っているのですが、一番容量を食っているのは自宅サーバのバックアップです。週次でホームディレクトリ以下を backup_YYYYMMDD.tar.gz
などとして AWS S3 に転送していました。そして AWS S3 のライフサイクルルールで30日後に削除されるように設定しています。ホームディレクトリの使用量が増えない限り、S3 の使用量も変わらない見込みです。でも実際にはこの半年でどんどん使用量が増えていっていた。
2021年11月末から S3 の使用量がどんどん増えていってますね。
なぜこうなった
ライフサイクルルールで有効期限切れになったオブジェクトが、非現行バージョンとなって残り続けてしまっていました。
時期的にみて、Amazon S3 ライフサイクルが新しいアクションとフィルターでストレージコスト削減をさらに最適化 の影響かと思うのですが、このリリースからではちょっとわからないですよね。
元々自分がどういう設定をしていたのかは画面キャプチャを撮っていたわけでも無いので分かりません。なので、あまり正確なことが言えなくて申し訳ないのですが、バケットのバージョニングは有効にしつつ、非現行バージョンは1日で削除するように設定していたのだと思います。それが今回の変更で非現行バージョンが全て削除されずに残るようになってしまったのだと思われます。
対処法
バケットのバージョニングを無効にしました。そもそも今の使い方ではバージョニングは自前でやってますので、S3 側の機能は不要です。
また、出来てしまった非現行バージョンのオブジェクトは「バージョンの表示」スイッチで表示して、手動で削除しました。