Lambda関数がAmazon RDS(PostgreSQL)のパスワードをAWS Secrets Managerから取得してデータベース接続を確立しています。現在は毎回GetSecretValue APIを呼び出しており、高トラフィック時にThrottlingException(スロットリングエラー)が発生しています。データベースパスワードは30日ごとに自動ローテーションされており、この機能は維持しつつスロットリングを解消する最もコスト効率の良い方法はどれですか?
AWS Parameters and Secrets Lambda Extensionは、Lambda関数内でSecrets ManagerとSSM Parameter Storeの値をローカルキャッシュするAWS公式Lambdaレイヤーです。関数コードはlocalhost:2773のHTTPエンドポイントにリクエストし、ExtensionがTTL管理を含むキャッシュを自動処理します。TTL期間中はAPIコールなしでキャッシュ値を返し、TTL経過後は自動的に最新値を再取得するため、パスワードローテーション後も確実に新しいパスワードが反映されます。コード変更が最小限でElastiCacheのような追加インフラも不要です。 選択肢Aのシークレット値をLambda環境変数にコピーする方法は、パスワードローテーション時に環境変数を自動更新する専用Lambdaの開発・運用が別途必要となり、ローテーションのタイムラグによる認証失敗リスクも残ります。 選択肢Cのグローバルスコープでのキャッシュはコンテナ再利用時には有効ですが、パスワードローテーション後の最新値反映には手動で関数を強制再デプロイする必要があり、自動化が困難で運用負荷が高くなります。 選択肢DのElastiCache(Redis)を導入する方法は、Redisクラスターという追加インフラの構築・運用コストが発生し、シークレットをRedisへ同期する別Lambdaの開発も必要です。Lambda Extensionのローカルキャッシュで完結する構成と比べ、コスト効率・運用効率の両面で劣ります。