無限ノック › DVA 練習問題一覧 › 問題
DVAAWSのサービスを使用した開発

Lambda関数で外部SaaSのAPIキーを利用します。要件は「①キーをコードや環境変数に平文で持たない ②キーは定期的にローテーションし、ローテーション後もコード変更なしで新しい値が使われる ③多数の同時実行があってもAPIキー取得のレイテンシとコストを抑える」です。最も適切な実装はどれですか。

A
Secrets Managerにキーを保存し自動ローテーションを設定、Lambdaはハンドラ外で取得した値をキャッシュし、AWS Parameters and Secrets Lambda Extensionでローカルキャッシュも併用する
✓ 正解
Secrets Managerは暗号化保存と自動ローテーションをネイティブ提供し、シークレット名参照によりコード変更なしで最新値を使えます。ハンドラ外キャッシュとLambda Extensionのローカルキャッシュ併用で取得回数を抑え、レイテンシとコストも削減できる全要件充足の構成です。
B
API KeyをLambdaの暗号化環境変数に格納し、KMSで復号して使用する
暗号化環境変数はKMS復号で平文露出を避けられますが、値を更新するには関数の設定変更・再デプロイが必要です。コード変更なしの自動ローテーションという要件②を満たせません。
C
SSM Parameter StoreのStandardパラメータに平文で保存し、毎回呼び出しごとにGetParameterで取得する
SSM Parameter StoreのStandard(String型)に平文で保存するとキーが暗号化されず、要件①に違反します。さらに呼び出しごとのGetParameterは同時実行時にレイテンシとAPIコストが増え、要件③にも反します。
D
S3バケットに暗号化したキーファイルを置き、Lambda起動ごとにダウンロードして復号する
S3にキーファイルを置く方式には自動ローテーション機構がなく、要件②を満たすには独自実装が必要です。起動ごとのダウンロードと復号もオーバーヘッドが大きく、要件③のレイテンシ・コスト面で不利です。

解説

Secrets Managerは機密情報を暗号化保存し、Lambda関数による自動ローテーションをネイティブにサポートします。アプリはシークレット名で参照するため、ローテーション後もコード変更なしで最新値を取得できます。AWS Parameters and Secrets Lambda Extensionを使うと値を実行環境内にキャッシュでき、同時実行や繰り返し呼び出しでもAPI取得回数を削減してレイテンシとコストを抑えられます。全要件を満たします。 選択肢Bの暗号化環境変数はローテーション時に関数の再デプロイが必要でコード/設定変更なしの自動更新ができない。 選択肢CのStandard平文パラメータは暗号化されず①に反し、毎回取得はレイテンシ・コスト面で非効率。 選択肢DのS3方式は自動ローテーション機構がなく、起動ごとのダウンロードも非効率。

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

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

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