💰

Amazon RDS Proxy で結構請求された話し

2023/11/20に公開

背景

先日健康診断の再検査を受けたら再検査となってしまった @___nix___ です。

AWSとコスト爆発にまつわる話は少なくありません。
コスト順だと次のような順番になるでしょうか。

5位 ... AWS Private CA($400/月)
4位 ... Amazon Kendra ($810/月)
3位 ... NatGateway($1,000/月)
2位 ... Amazon RDS Proxy($1,190/月)
1位 ... AWS CloudTrail ($62,000/4日)

過去にも先にも CloudTrail(厳密には CloudTrail-Lake)を超えるような話は見たこともありませんし聞いたこともありません。もしこれを超える話をお持ちの方は是非教えてください。

本題

今回ご紹介するのは 2位 に付けた Amazone RDS Proxy 、もう少し詳しく言うと、「RDS Proxy + Aurora Serverless v2」のお話です。

「なーんだ、ピン留めの話?」そう思われる方も少ない無いでしょう。

https://qiita.com/2kai/items/c58153294999bccbb6ec

これはいわゆる「ピン留め」という現象によりコネクションが増えていく状況です。この状況によってACUの使用率が下がらずに費用が高騰するという事故案件です。

では Amazon RDS Proxy の料金体系を見てみましょう。

image.png

確かに1時間当たりの ACU の利用量がそのまま料金に直結することが確認できました。

請求書

image.png

$1,190.40 !?
円安の今の状態だと 179,750円 ...

え、え、もしかして「ピン留め」が発生したのか?

調査

「ピン留め」かどうかは DatabaseConnectionsDatabaseConnectionsCurrentlySessionPinned の数を見れば分かりますので確認したところ、それらの値は全く増えておらず負荷もほとんど掛かっていないことが分かりました。

「ピン留め」では無い...。

では何が原因なのでしょうか。
もう一度 RDS Proxy に関連するリソースを調査してみました。

環境は4つ、それぞれに RDS Proxy が存在しており、それぞれエンドポイントが 2つ。

環境 RDS Proxy Endpoint
環境A 1 2
環境B 1 2
環境C 1 2
環境D 1 2

結構使ってることが分かりましたが、ザックリ計算してみましょう。
1ACU1時間当たりの単価は確か $0.025 でしたね。

24(h) x 31(Day) x 4(Proxy) x 2(Endpoint) x 0.025 = $148.8(時価22,469円程)

全然そこまでいかないです。

原因特定

分かる人には既に分かったかもしれません。
料金体系に罠がありました。

image.png

はい、最低料金 8 ACU と書いてあります。
つまり 1 ACU しか使ってなくても 8 ACU 使っているものとして計算しなさいという意味なので算出し直してみます。

24(h) x 31(Day) x 4(Proxy) x 2(Endpoint) x 0.025 x 8(ACU) = $1,190(時価179,750円程)

Σ(・ω・ノ)ノ!
た、高い...

編集後記

ほとんど利用しておらず、単に置いてあるだけでこれだけ課金されるというのにはビックリでした。こんな事例もあるということを事前に知っておいて頂けるだけでも良いかと思いますので皆さんもお気を付けください。

ただ、AWS公式サイトの説明でどうしても気になることがあります。

https://aws.amazon.com/jp/rds/proxy/pricing/

image.png

例えば、1時間に平均10ACUを消費する これは例としては間違っていないのですが、最低料金が8ACUに設定されるとすればそこに触れるべきで、例として示すのであれば 例えば、1時間に平均4ACUを消費する のようなものが必要だと思います。

4ACU しか使っていないけど、課金は 8ACU だということに気が付けるハズですので...

Discussion