はじめに
AWS Lambdaのカスタムレイヤーは、複数の関数間でコードやライブラリを共有するための強力な機能です。
しかし、Pythonを使用する場合、よくある落とし穴があります。
問題:カスタムレイヤーが機能しない
原因
多くの場合、問題はディレクトリ構造にあります。AWSは、各ランタイム用に使用するディレクトリ名を指定しています。
私はここでコケて時間使っちゃいました。
Pythonの場合、そのディレクトリ名は python
でなければなりません。
ドキュメントのPackaging your layer contentにその旨記述がありました。
Runtime | Path |
Python | python |
解決策
以下の手順で、利用できるPythonのカスタムレイヤー用ファイルが作成できます。
- 適切な名前のディレクトリを作成する:
mkdir python
2.必要なパッケージをインストールする:
pip install requests -t python/
-tはtargetの意味でここだとpythonというディレクトリにインストールしなさい。の意味です。
3.レイヤーをZIPファイルにパッケージング:
zip -r requests-layer.zip python
zipのファイル名自体はなんでもOKです。
4.作成済みのカスタムレイヤーに新しいバージョンを作成
上記Zipをアップロードして、Lambda関数でこのバージョンを参照させてEND。
まとめ
カスタムレイヤーを作成する際は、ランタイム環境に合わせたディレクトリ構造が重要です。
Pythonの場合、必ず python
というディレクトリ名を使用してください。
以上、初めてカスタムレイヤーを使用する場合や、トラブルシューティングの際に、この記事が参考になれば幸いです。