Maoの寄稿によるものです。AWSサーバーレスプラットフォームは、デマンドに応じて自動的に拡張するアプリケーションを構築することができます。負荷に応じて自動的にスケールします。多くの場合、開発者は、Lambda関数からリレーショナルデータベースに保存されたデータにアクセスする必要が出てきます。Lambdaからデータベースへの多すぎるコネクションにより過負荷にならないようにすることは難しい場合があります。リレーショナルデータベースの最大同時接続数は、データベースのサイズによって異なります。これは、各コネクションがデータベースサーバー上のメモリとCPUリソースを消費するためです。Lambda関数は数万の同時接続数までスケールできるため、それに対応するには、データベースはクエリを実行するだけでなく、コネクションを維持するためにより多くのリソースが必要になります。スケーリングの詳細については、アーキテクチャブログの投稿「サーバーレスアプリを大規模に設計する方法」も参照してください。RDSを使用したサーバーレスアーキテクチャLambdaは数万の同時リクエストに応じて簡単にスケールできるため、そのような状況において、この設計ではバックエンドのリレーショナルデータベースに高い負荷がかかります。通常は、リレーショナルデータベースは、Lambdaのスケーラビリティに応じた同時接続を受け入れるように設計されていません。Proxyのプレビューを発表できることを嬉しく思います。Proxyは、アプリケーションとRDSデータベースの間の仲介役として機能します。Proxyは、必要となるデータベースへのコネクションプールを確立および管理し、アプリケーションからのデータベース接続を少なく抑えます。Proxyを使用できます。サーバーレスのコンテキストでは、これによりLambda利用の体験がどのように改善されるかに焦点を当てています。Proxyは、Lambda関数からデータベースに直接流れるすべてのデータベーストラフィックを処理します。Proxyと対話します。Proxyは、Lambda関数の同時実行によって作成された大量の同時接続をスケーリングするために必要なコネクションをプーリングします。これにより、Lambdaアプリケーションは、Lambda関数呼び出しごとに新しいコネクションを作成するのではなく、既存のコネクションを再利用できます。Proxyは自動的にスケーリングされるため、データベースインスタンスでコネクション管理に必要なメモリとCPUリソースが少なくなります。暖機されたコネクションプールを使用することでパフォーマンス向上にもつながります。Proxyを使用すると、アイドル接続のクリーンアップとコネクションプールの管理を処理するコードが不要になります。Lambda関数コードは、より簡潔でシンプルとなり、保守性が向上します。Proxyは、プレビューであり、留意事項がいくつかあります。MySQLをサポートしています。プレビューは、アジア太平洋(東京)、EU(アイルランド)、米国東部(オハイオ)、米国東部(バージニア北部)、米国西部(オレゴン)で利用できます。Proxyを設定する必要があります。プレビューである事に起因した変更が発生する可能性があるため、本番ワークロードにはこのサービスを使用しないでください。サービスの詳細な説明については、プレビューガイドを確認してください。MySQLのいずれかの既存データベースから始めていきましょう。Proxyがこのシークレットを読み取れるようにするIAMポリシーを作成します。secretを選択します。パスワードを入力します。このシークレットでアクセスするRDSデータベースを選択して、[Next]を選択します。Nextを選択します。すべてのデフォルトを受け入れてStoreを選択します。後で必要になるため、このシークレットに割り当てられたARNをメモしておいてください。Proxyがこのシークレットを読み取ることができるIAMロールを作成します。Proxyは、このシークレットを使用して、データベースへのコネクションプールを維持します。IAMコンソールに移動して、新しいロールを作成します。前の手順で作成したシークレットにsecretsmanagerアクセス許可を提供するポリシーを追加します。"Allow",次の信頼ポリシーを追加して、RDSにAssumeRoleを許可しロールを保存します。後で必要になるため、IAMロールのARNをメモします。Lambda関数にデータベースプロキシを追加します。Proxyを有効にするLambda関数を開きます。Proxy]を選択します。入力し、RDSデータベースを選択します。IAMロールを選択します。Proxyはこのシークレットを使用してデータベースに接続します。Proxyがプロビジョニングされ、ステータスがAvailableに更新されるまで数分待ちます。プロキシを選択して詳細を表示します。Proxyエンドポイントをメモしてください。これは後でLambda関数コードで必要になります。Proxyを使用する権限が与えられ、プロキシに接続する準備が整いました。Proxyに接続します。これを行うには、2つのセキュリティオプションがあります。Managerに保存されているネイティブのデータベース認証情報を使用できます。IAM認証の方が、実装コードに認証情報を埋め込む必要がないため推奨されます。Managerで以前に作成したデータベース資格情報を使用します。Lambdaがサポートする任意のプログラミング言語を使用できます。以下の例ではNode.jsを使用しています。MySQLクライアントモジュールをパッケージ化して関数に導入する必要があります。Lambda環境変数を使用して、接続情報を保存します。これはデータベース構成設定のベストプラクティスであるため、コードを更新せずにこれらの詳細を変更できます。Proxyエンドポイントを指定しますが、これは前にメモしたものを利用します。db環境変数には、データベース・スキーマ名が格納されています。ここで概要を説明しています)。権限を自動的に追加します。このオプションを使用すると、ネイティブのデータベース認証情報を使用する代わりに、IAMから一時トークンを取得してデータベースを認証できます。Proxyは、データベースへの暖機されたコネクションプールを確立することにより、LambdaからRDSデータベースへの多数の接続を管理するのに役立ちます。使用して複数の同時アプリケーションリクエストに対応できます。これにより、データベースのCPUとメモリの要件が緩和され、コード内のコネクション管理ロジックが不要になります。