[速報]これでLambdaのコネプー問題も解決?!LambdaからRDS Proxyを利用できるようになりました(まだプレビュー) #reinvent
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と同様になると思うので、こちらの記事も参考にしてみて下さい。
必要な設定
RDS ProxyはRDSの認証情報をシークレットマネージャーから読み取ります。事前にシークレットの作成と、作成したシークレットに対する諸々の権限を有したIAMロールの作成が必要になります。
利用可能なリージョン
現在以下のリージョンで利用可能です。
- 東京
- アイルランド
- オハイオ
- バージニア
- オレゴン
対応しているRDSのエンジン
RDS for MySQLおよびAurora MySQLの5.6,5.7のみ対応しています
終わりに
最近Data APIのコネクションプーリングについて色々調べている中で、普通にLambda <-> RDS間でもプロキシ型のコネプーが使えたら良いのになー。。。と思っていたところでした。これでさらにLambdaを利用できるユースケースが広がりそうです! まだプレビューですが、ガンガン触ってAWSにフィードバックしていきたいと思います。