ちょっと話題の記事

[速報]これでLambdaのコネプー問題も解決?!LambdaからRDS Proxyを利用できるようになりました(まだプレビュー) #reinvent

2019.12.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

CX事業本部@大阪の岩田です。 またまたLambda関連のアップデート情報です。 Lambda <-> RDSのDB接続を管理するために、RDS Proxyという新しい機能が利用可能になるというものです!

Using Amazon RDS Proxy with AWS Lambda

なお、まだプレビュー段階ですですのでご注意下さい。 プレビュー版の注意事項はこちら

[AWS] re:Invent 前に理解しておくべきベータ/プレビューサービスの扱いについて #reinvent

概要

Lambda実行環境ではコネクションプーリング機構が利用し辛く、RDSの最大同時接続数以上にLambdaが起動した場合にRDSヘの接続エラーが発生しやすい環境でした。このため、LambdaとRDS(B)の組み合わせは一般的にアンチパターンとされてきました。 今回発表されたRDS Proxyの機能を利用するとRDS Proxy側でRDSとの接続を管理し、複数のLambda実行環境を跨いで1つのDB接続を使いまわすことが可能です。このアーキテクチャには以下のようなメリットがあります。

  • RDS側で必要な物理的なDB接続数が少なくなり、DBインスタンスのリソース消費量が削減される
  • Lambdaを実行する都度新たにDB接続を作成する必要が無くなり、DB接続のオーバーヘッドが削減される
  • Lambda側でアイドル状態接続のクリーンアップと接続プールの管理が不要になる

考え方としてはAurora ServerlessのData APIと同様になると思うので、こちらの記事も参考にしてみて下さい。

Aurora ServerlessのData APIは裏側でコネクションプーリングを実現してくれているという話

必要な設定

RDS ProxyはRDSの認証情報をシークレットマネージャーから読み取ります。事前にシークレットの作成と、作成したシークレットに対する諸々の権限を有したIAMロールの作成が必要になります。

利用可能なリージョン

現在以下のリージョンで利用可能です。

  • 東京
  • アイルランド
  • オハイオ
  • バージニア
  • オレゴン

対応しているRDSのエンジン

RDS for MySQLおよびAurora MySQLの5.6,5.7のみ対応しています

終わりに

最近Data APIのコネクションプーリングについて色々調べている中で、普通にLambda <-> RDS間でもプロキシ型のコネプーが使えたら良いのになー。。。と思っていたところでした。これでさらにLambdaを利用できるユースケースが広がりそうです! まだプレビューですが、ガンガン触ってAWSにフィードバックしていきたいと思います。