Lambdaって便利ですよね…AWSを利用していて何か便利にしたい!と思ったときに必ずと言っていいほどに活躍してくれています。そんなLambda関数をもっと便利に使うために、「レイヤー」と呼ばれる機能があります。
1.レイヤーとは
公式ドキュメントでは、こんなことが書かれています。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html
Lambdaレイヤーは、追加のコードまたはデータを含むことができる .zip ファイルアーカイブです。レイヤーには、ライブラリ、 カスタムランタイム 、データ、または設定ファイルを含めることができます。レイヤーを使用すると、コードの共有と責任の分離を促進し、ビジネスロジックの記述をより迅速に繰り返すことができます。
レイヤーは、 .zip ファイルアーカイブとしてデプロイされた Lambda関数でのみ使用できます。コンテナイメージとして定義された関数では、コンテナイメージの作成時に、優先ランタイムとすべてのコード依存関係をパッケージ化します。詳細については、AWS コンピューティングブログの「コンテナイメージの Lambda レイヤーと拡張機能の使用
」を参照してください。
ざっくりとまとめると、pipなどのライブラリをLambda関数間で共有できたりします。
レイヤーを使う前は、個々の関数で必要なライブラリをpipして、それをひとまとめにしてzipでアップロードしていました。
ですが、このレイヤーを利用することで、あの関数で使ったライブラリが便利だからこっちでも使いたい!となっても、その関数にレイヤーを追加するだけで利用できるようになります。
2.レイヤー追加
1.左横のメニューから「レイヤー」を選択
2.右上の「レイヤーの追加」を選択
3.名前と説明を記入してzipファイルをアップロード、ランタイムを選択し右下の「作成」をクリック
この時に気を付けたいのが、「ファイル名」です。pipしたライブラリ群をzipします。そしてそのファイル名は、「python.zip」としてください。そうしないとレイヤーを追加できても関数で、うまく動作しません。
4.完成!
3.最後に
これで、一つの関数でしか使えなかったpipも、他の関数でも利用できるようになりました。
最後にもう一度だけ、「アップロードするzipファイルの名前は、python.zipにしましょう」