Q21 — AWS DVA-C02 第3章
第 21/100 問 | ← 第3章
開発者がサーバーレスアプリケーションを設計しており、2つのAWS Lambda関数を用いて画像を処理します。1つ目のLambda関数はオブジェクトをAmazon S3バケットに保存し、関連するメタデータをAmazon DynamoDBテーブルに保存します。もう1つのLambda関数はDynamoDBテーブル内のメタデータを用いてS3バケットからオブジェクトを取得します。両方のLambda関数は複雑な計算を実行する同じPythonライブラリを使用しており、圧縮デプロイパッケージの最大サイズ制限に近づいています。開発者は、Lambdaデプロイパッケージのサイズを最小限に抑えつつ、運用上のオーバーヘッドを最も小さくするにはどうすればよいですか?
- A. 各Pythonライブラリを個別のzipファイルアーカイブにパッケージ化します。各Lambda関数を独自のライブラリコピーとともにデプロイします。
- B. 必要なPythonライブラリを用いてLambdaレイヤーを作成します。2つのLambda関数の両方でこのLambdaレイヤーを使用します。 ✓
- C. 2つのLambda関数を1つのLambda関数に統合します。単一のzipファイルアーカイブとしてLambda関数をデプロイします。
- D. PythonライブラリをS3バケットにダウンロードします。Lambda関数を、オブジェクトURLを参照するようにプログラムします。
正解: B. 必要なPythonライブラリを用いてLambdaレイヤーを作成します。2つのLambda関数の両方でこのLambdaレイヤーを使用します。
解説
正解はBです。2つのLambda関数が同一のPythonライブラリを使用し、かつデプロイパッケージの最大サイズに近づいている場合、共通ライブラリをLambdaレイヤーとして抽出することで、各関数が重複してライブラリを含むことを回避できます。これにより、各関数のデプロイパッケージサイズが削減され、運用上のオーバーヘッドも最小限に抑えられます。選択肢Aはデプロイの複雑性と管理コストを増加させます。選択肢Cは関数の論理を複雑化し、保守性・拡張性を損ないます。選択肢Dは実行時の遅延と複雑性を増加させます。よって、Bが最適解です。