ある企業が AWS Lambda を使ったサーバーレスアプリケーションを構築しており、Lambda 関数が Amazon RDS for PostgreSQL に接続する必要があります。Lambda の同時実行数は最大 1,000 で、各 Lambda の実行時間は平均 5 秒です。RDS の接続数上限(max_connections)を超えてエラーが発生する問題が起きています。コードを最小限に変更して最もコスト効率よく解決するには、どの方法が適切ですか?
- A. Lambda の同時実行数の上限(Reserved Concurrency)を 50 に制限し、RDS の接続数超過を防ぐ
- B. RDS を Amazon DynamoDB に移行し、接続数の問題を根本的に解決する
- C. RDS のインスタンスタイプをより大きなサイズにアップグレードして max_connections の上限を増やす
- D. Amazon RDS Proxy を RDS の前段に設置し、Lambda から RDS Proxy エンドポイントに接続する。RDS Proxy がコネクションプーリングを管理し、実際の RDS への接続数を削減する
解答と解説を見る
正解: D
RDS Proxy は Lambda と RDS の間でコネクションプーリングを管理し、Lambda の同時実行が 1,000 であっても RDS への実際の接続数を数十に削減できます。Lambda 側はコネクション文字列を RDS エンドポイントから RDS Proxy エンドポイントに変更するだけで対応でき、コードの変更は最小限です。 C: インスタンスのアップグレードでmax_connections は増えますが、Lambda の同時実行が増加するにつれ再度上限に達します。根本的な解決にはなりません。 A: 同時実行数を 50 に制限すると、ピーク時に多数のリクエストがキューイングまたはエラーになり、アプリケーションのパフォーマンスが大幅に低下します。 B: DynamoDB への移行は PostgreSQL が必要なリレーショナルモデルの場合に適用できず、大規模なデータモデルの変更とアプリケーションの書き直しが必要です。「コードを最小限に変更」という要件に反します。
📚 関連サービスの解説: Amazon RDS ・ AWS Lambda