AI作成・独立検証済(有資格者監修なし)DVA-C02 対応
レイヤー難易度 標準無料

ある組織では10個のLambda関数がすべて同じサードパーティのロギングライブラリと共通の社内ユーティリティモジュールに依存している。現状は各関数のデプロイパッケージにこれらのコードを個別に同梱しており、ライブラリのバージョンアップのたびに10個すべての関数を再デプロイする必要があり運用負荷が高い。この状況を改善する設計として最も適切なものを選べ。(単一選択)

  1. Aロギングライブラリと社内ユーティリティを1つのLambdaレイヤーとして発行し、10個の関数それぞれにアタッチする。更新時はレイヤーの新バージョンを発行し、各関数のレイヤー参照を差し替える
  2. B10個の関数を1つの巨大なモノリシック関数に統合し、共通コードの重複自体をなくす
  3. C共通コードをS3バケットに配置し、各関数がハンドラー実行のたびにS3からダウンロードしてメモリ上に展開する
  4. D各関数のデプロイパッケージに共通ライブラリを同梱したまま、CI/CDパイプラインで10関数を並列デプロイして更新時間を短縮する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

Lambdaレイヤーは、複数の関数間で共有したいライブラリ・カスタムランタイム・共通コードを 関数本体のデプロイパッケージとは別の.zipアーカイブとしてパッケージ化し、複数の関数にアタッチできる仕組みである。

  • 共通のロギングライブラリと社内ユーティリティを1つのレイヤーとして発行し、10個の関数それぞれにそのレイヤーをアタッチする。
  • ライブラリを更新する際はレイヤーの新しいバージョンを発行し、各関数の設定でアタッチするレイヤーのバージョンを更新するだけでよく、 関数本体のコードやデプロイパッケージ自体は変更不要(関数コードと依存関係を分離できる)。
  • 関数は最大5つのレイヤーをアタッチでき、関数コード+全レイヤーの展開後の合計サイズは250MB以内に収める必要がある。
各誤答が違う理由
  • B関数の責務が混在しコールドスタート時間や単一障害点のリスクが増大する。関数分割の設計原則に反し、共通ライブラリの共有問題の直接的な解決にもならない。
  • C呼び出しごとにS3からのダウンロードが発生しレイテンシとコストが増える。レイヤーであればデプロイ時に展開済みのため実行時ダウンロードは不要。
  • Dデプロイ時間は短縮できても、共通コードの重複同梱とバージョン管理の煩雑さという根本課題は解決していない。
ひっかけ: 「共通コードをS3に置いて関数から都度ダウンロードする(C)」は実行のたびにレイテンシとAPI呼び出しコストが発生し非効率。 レイヤーはデプロイ時に関数の実行環境の/opt配下へ展開され、実行時には追加のダウンロードなしで参照できる点が本質的な違い。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
この分野をもっと解いて、得点源に
Lambda開発 を含む問題を分野別に演習できます。
演習する →