Q80 — AWS DVA-C02 第2章
第 80/100 問 | ← 第2章
ある開発者が、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関数に統合します。Lambda関数を単一の.zipファイルアーカイブとしてデプロイします。
- D. PythonライブラリをS3バケットにダウンロードします。Lambda関数を、オブジェクトのURLを参照するように記述します。
正解: B. 必要なPythonライブラリを含むLambdaレイヤーを作成します。2つのLambda関数の両方でこのLambdaレイヤーを使用します。
解説
Lambdaレイヤーを使用することは、Lambdaデプロイパッケージのサイズを最小化しつつ、運用上のオーバーヘッドを増加させない効果的な方法です。このケースでは、2つのLambda関数が同じPythonライブラリを使用しているため、そのライブラリをLambdaレイヤーとして作成し、両方のLambda関数で共有することで、各関数に同一ライブラリを重複してパッケージ化する必要がなくなり、デプロイパッケージサイズを削減できます。他の選択肢は、運用上のオーバーヘッドを増加させるか、効果的でない可能性があります。