[アップデート] AWS Lambda コンソールからも AWS Lambda と Amazon RDS の接続設定ができるようになりました

2023.12.08

いわさです。

数ヶ月前ですが、RDS のコンソール画面から Lambda 関数と VPC 接続構成を行うための機能が実装されました。
パラメータや必要リソースを一部自動作成・設定してくれるので、検証用途などでささっとネットワーク設定を行うたい場合に有効な機能でした。

上記のタイミングでは RDS コンソールから構成が可能だったのですが、本日のアップデートで Lambda コンソールからも RDS との接続構成設定を行うことが出来るようになりました。

ふーん?と思って見てみたところ初見だとどこから設定するのかよくわからなかったのと、手順などが公式ドキュメントに記述されていないように見受けられたので、変更点をまとめてみました。

設定方法

今回のアップデートで変更されたのは、既存 Lambda 関数の設定タブです。
次のように「RDS データベース」が追加されました。
ちなみに新規関数の追加フローの中では RDS データベースの設定箇所はありませんので、新規作成後に設定タブから設定が必要です。

VPC に接続していない関数であると表示されていますが、Lambda 関数は VPC へ接続していても、接続していなくてもどちらでも大丈夫です。
後述しますが、VPC 未接続の Lambda で RDS 構成を行うと自動で VPC 接続も行われます。

「RDS データベースに接続」を行ってみます。

RDS データベースの設定

設定の中で行えることは、接続する RDS の選択と、RDS プロキシの選択です。
RDS については既存のデータベースか新規のデータベース作成かを選ぶことが出来ます。

新規データベースを作成する場合はこの画面から次のパラメータを入力して RDS が自動作成される流れとなります。
選択可能なエンジンタイプは MariaDB、MySQL、PostgreSQL です。SQL Server と Oracle は選択出来ませんでした。

新規作成しない場合は作成済みの既存 RDS を選択することも出来ます。
ここでは VPC 未接続の関数を既存 RDS へ接続してみました。

設定完了後、次のように RDS データベースエリアにデータベースが表示されました。
この接続系のアップデートで注意しておきたいところなのですが、実際のところは Lambda 関数から RDS への接続が実装されているわけではありません。Lambda のネットワーク設定上、この RDS へ接続出来る状態になっていますというだけですので、アプリ側の実装は必要という点は認識しておきましょう。

元々は VPC 未接続の Lambda 関数でしたが、RDS 接続設定後は VPC へも接続されていました。
特にサブネットやセキュリティグループの細かい設定はしていない(できない)のでデフォルトで色々と勝手に設定されます。このあたりは今までの RDS 接続機能と同様ですね。
本日時点では公式ドキュメント上の記述が見当たりませんでしたが、おそらくそのうちどういうルールでセキュリティグループが設定されるのかなどが追記されるのではないかと予想しています。

ちなみに、同一セキュリティグループで VPC 接続を行っている Lambda 関数でも RDS データベースへの接続がされているものとして表示されます。
おそらく、Lambda で使用するセキュリティグループと RDS で使用するセキュリティグループが関連づいていると接続設定されているものと認識されていそうです。

RDS プロキシの設定

RDS プロキシの設定はオプションとなっています RDS プロキシもデータベースと同様に自動作成あるいは既存のプロキシを設定する流れとなっていますのであまりできることは変わらないのですが、触った感じ少し気にしておく点があります。

まず、RDS プロキシの場合は Secrets Manager との統合が前提となっています。
RDS 側で Secrets Manager を使っていない場合は RDS プロキシの構成が出来ませんのでご注意ください。

また、VPC Lambda のサブネットですが 2 つ以上である必要があります。

さいごに

本日は Lambda コンソールからも Lambda と RDS の接続設定機能が使えるようになったので設定方法を確認しながら使ってみました。

私はまだ使いこなせていないのですが、RDS 接続設定機能シリーズ色々と追加されていますね。
今まではアクションメニューから接続を行う流れが多かったと思いますが、今回は設定タブから行うパターンということでちょっと最初戸惑いましたが使い方は従来と同じですね。