無限ノック › DVA 練習問題一覧 › 問題
DVAセキュリティ

Lambda関数がAmazon RDS(PostgreSQL)のパスワードをAWS Secrets Managerから取得してデータベース接続を確立しています。現在は毎回GetSecretValue APIを呼び出しており、高トラフィック時にThrottlingException(スロットリングエラー)が発生しています。データベースパスワードは30日ごとに自動ローテーションされており、この機能は維持しつつスロットリングを解消する最もコスト効率の良い方法はどれですか?

A
シークレット値をLambda環境変数にコピーしKMSで暗号化して保存する。ローテーション用のLambdaを別途作成し、パスワードローテーション時に環境変数を自動更新する仕組みを構築する
シークレット値をLambda環境変数にコピーする方法は、パスワードローテーション時に環境変数を自動更新する専用Lambdaの開発・運用が別途必要となり、ローテーションのタイムラグによる認証失敗リスクも残ります。
B
AWS Parameters and Secrets Lambda Extension(Lambdaレイヤーとして提供)をLambda関数に追加し、設定可能なTTL(Time To Live:キャッシュ有効期間)付きのローカルキャッシュ経由でシークレットを取得するようコードを変更する
✓ 正解
AWS Parameters and Secrets Lambda Extensionは、Secrets ManagerやSSMの値をローカルにキャッシュするAWS公式レイヤーです。設定可能なTTLでAPIコールを抑えてスロットリングを解消し、TTL経過後は最新値を再取得するためローテーションも維持できます。
C
Lambda関数のグローバルスコープ(ハンドラー関数の外側)でシークレットを取得してグローバル変数に保持し、コンテナ再利用時はキャッシュ値を使用する。ローテーション後は関数を強制的に再デプロイして更新する
グローバルスコープでのキャッシュはコンテナ再利用時には有効ですが、パスワードローテーション後の最新値反映には手動で関数を強制再デプロイする必要があり、自動化が困難で運用負荷が高くなります。
D
Secrets ManagerとLambdaの中間にElastiCache(Redis)を配置し、別のLambdaがシークレットをRedisにキャッシュする構成に変更する
ElastiCache(Redis)を導入する方法はRedisクラスターという追加インフラの構築・運用コストが発生し、シークレットをRedisへ同期する別Lambdaの開発も必要です。Extensionのローカルキャッシュで完結する構成よりコスト効率が劣ります。

解説

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のローカルキャッシュで完結する構成と比べ、コスト効率・運用効率の両面で劣ります。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る