【要約】複数のLambdaで使う共通処理:CDKでLambdaレイヤーに切り出して対応した話 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が複数のLambda関数を運用する際、共通ロジックの管理に課題を抱える。コードの重複を許容すると、以下のような問題が発生する。
- ・各関数へ同じコードをコピーする手間が発生する。
- ・共通処理の修正時に、全関数への適用漏れが生じる。
- ・Lambda本体のコードが肥大化し、責務が不明確になる。
// Approach
開発者は、共通処理をLambda Layerとして切り出す手法を採用した。具体的な手順は以下の通りである。
- ・
lambda_layer/python/という特定のディレクトリ構成でコードを配置する。 - ・CDKの
lambda.LayerVersionを用いてレイヤーを定義する。 - ・各Lambda関数の
layersプロパティに作成したレイヤーを指定する。 - ・Lambda側では、通常のモジュールとして
importを行う。
// Result
共通処理をレイヤーに集約し、開発効率と保守性を向上させた。これにより、以下の成果が得られた。
- ・コードの重複が排除され、修正箇所が一本化された。
- ・Lambda関数は固有の処理に集中できるようになった。
- ・レスポンス生成やログ整形などの実装が標準化された。
Senior Engineer Insight
> Lambda LayerはDRY原則の維持に極めて有効だ。ただし、レイヤー更新時は新しいバージョンが生成される。そのため、Lambda側の更新も必要となる点に留意せよ。過度な共通化は依存関係を複雑化させる。共通化の対象は、ログ整形などの横断的関心事に限定すべきだ。