BBH
-Biz Branding Hub-
投稿日 : 
2019/11/09
更新日 : 
2019/11/09

【AWS】LambdaLayerを使って共通機能をライブラリ化する手順

AWS Lambdaには、共通の関数などをパッケージ化するLambdaLayerという機能があります。
これを使えば、Lambdaごとに同じような処理を書かなくてよいですし、共通機能の変更はLambdaLayerを変更するだけですべてのLambdaに適用することができます。
今回は、そんな便利な機能であるLambdaLayerの使い方について説明していきます。

LambdaLayer本体の作成

今回はPythonを例に説明していきます。
LambdaLayerといってもその実態は、ただの共通ライブラリです。
なので、まず作るべきは共通化したい関数を集めたpythonのプログラムを作ることです。

例えば以下のような感じです。

LambdaLayerのサンプル

def sample_method1():
  print("sample_method1")

def sample_method2():
  print("sample_method2")

def sample_method3():
  print("sample_method3")

こんな感じで、共通関数を列挙していきます。
LambdaLayer本体の作成はこれで完了です。

LambdaLayerをZIP圧縮

作成したプログラムをLambdaLayerとして使用するには、そのプログラムをZIP圧縮してAWS上にアップロードする必要があります。

ZIP化する際には、以下のようにpythonディレクトリの配下に作成したLambdaLayerを配置する必要があります。

LambdaLayerのフォルダ構造例

python
  LambdaLayerSample.py

このようなディレクトリ構造で、python.zipを作成します。

作成したpython.zipを以下のようにAWSコンソール上からアップロードします。
「Lambda>Layer>レイヤーの作成」を選択。

それぞれの項目を設定していきます。

LambdaLayer設定項目

名前 LambdaLayerの名前。あくまでAWS上での管理名で、参照の時に使用されるわけではない。
説明 - オプション LambdaLayerの簡単な説明を入力。
アップロード 先ほど作成したZIPファイルをアップロードする。
互換性のあるランタイム - オプション LambdaLayer使用できる言語を指定できます。今回はPythonで使用するのでPython3.7を選択します。

作成完了。

LambdaからLambdaLayerを参照する

最後に作成したLambdaLayerをLambdaから使用してみます。

まずはLambdaコンソールからLambdaLayerを追加します。
「Designer」から「Layers」を選択します。

「レイヤーの追加」を選択。

レイヤーとバージョンを選択します。

以下のように追加されていればOKです。

コンソールからのLambdaLayerの参照が完了したら、次はプログラム上から参照設定を行います。
使用する際は、以下のように「import プログラム名」で参照が可能です。

呼び出し側Lambdaサンプル

# LambdaLayerの参照設定。sampleはエイリアス(別名)。
import LambdaLayerSample as sample

def lambda_handler(event, context):
  # LambdaLayerの呼び出し
  sample.sample_method1()

注意点としては、先ほども書きましたが、参照名がLambdaLayer名ではないということです。
あくまでZIP圧縮したファイルの中にあるプログラム名を記載する必要があります。
例えば、LambdaLayer名が「LambdaLayerSample」でも、ZIPファイルの中身が「LambdaLibrary.py」だとしたら、参照設定は、「import LambdaLibrary」となります。

Profile

管理人プロフィール

都内でITエンジニアをやってます。
変遷:中規模SES→独立系SIer→Webサービス内製開発
使用技術はその時々でバラバラですが、C#、AWSが長いです。
どちらかと言うとバックエンドより開発が多かったです。
顧客との折衝や要件定義、マネジメント(10名弱程度)の経験あり。
最近はJava+SpringBootがメイン。

Recommend