2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Lambdaにライブラリを乗せるときにLayersを使ったら便利

Last updated at Posted at 2020-02-01

Lambdaにデプロイするときライブラリも一緒にデプロイする場合があると思いますが、いざデプロイするとちょっとした修正がコンソール上でできず、ちょっとめんどくさかったです。
それについてぼやいたらLayersを使えばどうかとアドバイスをもらったので、その備忘録。

デプロイする関数

APIをちょっとたたく関数。言語はPython。

LambdaのLayers機能

公式。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html
ライブラリをレイヤーとして取り込め、共通ライブラリとして利用できる。
そのためLambda関数にライブラリを取り入れる必要がない。
他のユーザが公開してるLayerも使えるらしい。

そのままデプロイすると

ライブラリだけで4.5MBでした。
image.png

インラインコードが表示されず、ちょっと編集するのにアップロードしなおさなければいけません。
image.png

Layersを使う

左のメニューバーよりLayersを選び、「レイヤーの作成」を選ぶ
image.png

名前と説明、利用したいライブラリのzipをアップロードし、作成します。
※容量が多い場合はS3を利用する
image.png

この時、使用するライブラリをすべて「python」というフォルダに入れ、pythonフォルダごとzipすること。
アップロードすると/opt直下にライブラリモジュールが配置される。
pythonでは/opt/pythonにすでにパスが設定されているので、ライブラリをpythonフォルダに含め、アップロードすることで自動的にライブラリまでのパスが通り利用ができる。
Python以外の指定フォルダは公式ドキュメントを参照。
わたしはこれで躓きました・・・

Lambdaに設定する

LambdaのDesignerより「Layers」を選ぶとレイヤー追加する項目が出るため、「レイヤーを追加」を選ぶ。
image.png

「名前」を選び、先ほど作成したレイヤーを選び、追加。
image.png

レイヤーに追加されました。
image.png

デプロイはモジュールと設定ファイルのみでよくなり、インラインコード編集ができるように!
image.png

まとめ

ライブラリを共通化するだけでなく、普通のデプロイ時にも便利。
だけどコツというか、ちゃんと公式ドキュメントは読まなきゃね・・・

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?