3
1

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 1 year has passed since last update.

Lambda Layerで外部モジュールを使う

Posted at

概要

Lambdaで標準ライブラリ以外を使用したい場合、モジュールをLambdaの関数と一緒にアップロードする方法がありますが、モジュールのサイズが大きいとコンソール上でコードを編集することが出来なくなります。

image.png

そのため、Lambda Layerを作成して、そこにモジュールをアップロードすることで、モジュールのサイズが大きくてもコードが編集できるようにします。

1.モジュールの準備

アップロードするモジュールを準備します。
以下を実行し、モジュールが入ったzipファイルを作成します。
なお、zipファイルが解凍されたときにpythonフォルダが出力され、
pythonフォルダ内にモジュールが入っている必要があります。
※任意のフォルダ名だと外部モジュールは使用できません。

mkdir python
pip install <モジュール> -t ./python
zip -r layer.zip ./python

2.LambdaLayerの作成

AWSコンソール画面にアクセスして、Lambdaの設定画面を開きます。
左メニューから[レイヤー]をクリック→[レイヤーの作成]をクリックします。
image.png
レイヤーの作成画面から以下を行います。

  1. [名前]に適当な名前を入れます。
  2. Zipファイルをアップロードを選択し、作成したzipファイルをアップロードします。
  3. アップロードするモジュールに合わせランタイムを選択します。
  4. [作成]をクリックし、LambdaLayerを作成します。

image.png
Lambda設定画面の左メニューより[関数]をクリックして関数一覧を表示します。外部モジュールを使用したい関数をクリックし、関数の設定画面を開きます。
image.png
画面下にレイヤー項目があるので、[レイヤーの追加]をクリックします。
image.png
レイヤーの追加画面で以下を実施します。

  1. [レイヤーソース]に「カスタムレイヤー」を選択します。
  2. [カスタムレイヤー]に作成したLambdaLayerを選択します。
    ※関数のランタイムとLambdaLayerのランタイムが一致しないと選択できません。
  3. [バージョン]を選択します。作成したばかりだと、1しかないです。

image.png

[関数の概要]項目で、Layersに追加したLambdaLayer数が表示されます。
image.png

後は、外部モジュールを使用できるようにコードを書きます。
pythonだとimport文を使用すればいいです。

まとめ

とりあえず、Layerにまとめておく方が関数にアップロードしておくより、スッキリする感じがします。バージョン管理もできるので、とりあえずLayerを作成しておいた方がいいと思います。次はTerraformで実装する方法を書きたいと思います。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?