18
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RDS ProxyをやめてRDS Data APIに切り替えた

Last updated at Posted at 2024-04-11

はじめに

RDS Proxyとは

RDS Data APIとは

Lambda×RDS(Aurora含む)の場合、RDS Proxyを間に挟むのはごく一般的な構成かと思います。

私も以前はLambdaからRDSアクセスがあるなら必須だよな〜と思っていたのですが、あるシステムでRDSにAuroraServerlessV2を採用した際、従来通りRDS Proxyも作成したら料金が跳ね上がってびっくりしました。

AuroraServerlessV2の場合のRDS Proxyの料金は、1時間1ACUあたり0.025USDで課金されます。

ただこの料金体系、よく見ると最低料金が8ACUとなっており、要は使用しているのが1ACUだけであっても、8ACU使ったものとして料金が計算されてしまうのです。
該当のシステムはサービスインする前のPoC段階だったので、ACUは0.5に設定していたのですが、8ACU分の料金が発生していました。

高いな〜RDS Proxy必要なのかな〜と悶々していたところ、AWSの方と話す機会があり、2023年12月にリリースされたばかりのAuroraServerlessV2に対応したRDS Data APIを教えてもらいました。

2024年4月現在、リージョンや使えるDBエンジンが限定されているものの、該当のシステム構成的に利用可能だったので、料金削減のため切り替えることにしました。

どう変わったか

料金

RDS Data APIはHTTPでAPIをコールすることでAuroraにアクセスします。
料金はリクエスト数に応じて課金され、最初の10億件のリクエストは100万回あたり0.42USD、10 億件を超えた場合は0.24USDです。

該当システムは現状月10万件のリクエストに収まっていたので、請求は0USDでした。
RDS Proxyの場合はProxyだけで大体毎月150USDほどかかっていたので激安ですね。

厳密にはData APIを使用するのにSecret Managerが必要になるので、その分の料金は発生しますが、月1USDもかからないのでほぼ無視できます。

RDS Proxyの場合はRDS関連だけで月225.60USDかかっていたのが、75.18USDまで削減できました。やったね!!

構成

副次的な効果で構成も単純にすることができました。

このシステムはLambdaからインターネットにアクセスする必要があり、VPC外Lambda→VPC内Lambdaをコールするという構成を取っていました。
RDSにLambdaからアクセスするにはLambdaをRDSと同じVPCのサブネットに入れる必要がありますが、その場合 NAT Gatewayをおかないとインターネットにアクセスできません。
このNAT Gatwayも結構高額なサービスで、コスト削減のためこんな構成にしていました。

image.png

Data APIを有効にすると内部で専用のエンドポイントが作られ、そこから通信をするので、LambdaをVPC内に入れる必要がなくなります。

こうなりました。

image.png

Lambda→Lambdaの構成が複雑だったので、すっきりしました。

おわりに

RDS ProxyとData APIどちらが良いかは当然システム要件によって変わると思います。
そもそも同時アクセス数が多くないシステムはProxyなしでLambda→RDS直接続でも問題ないです。
Lambda×RDSだからRDS Proxy必須!ではなく、Data APIの利用も検討できるな、という話でした。

Data APIに切り替えたことでLambdaのコードも大幅に書き換えたので、それについては別途記事にします。

18
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?