はじめに
Lambdaで共通処理を外出しできるLambda Layersが発表になりましたので試してみます
https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
イメージ的には以下の様な感じで、各Lambda関数にLayerを登録することができます
また、Layer自体もバージョン設定が可能です
今回はPythonを使用します
サンプル(Layer側)
import logging
def log(name, level):
logger = logging.getLogger(name)
logger.setLevel(level)
formatter = '%(levelname)s : %(asctime)s : %(message)s'
return logger
サンプル(呼び出し側)
from logger import log;
logger = log('sample', 20)
def lambda_handler(event, context):
logger.info('event: {}'.format(event))
手順
Lambda Layerの作成
Lambda Layerに登録するには、Zipファイルとしてアップロードする必要があるためローカルでファイルを作成し圧縮します
圧縮は、Pythonという名称でディレクトリを作成した上でその中にファイルを作成します
$ mkdir python
$ emacs python/logger.py
$ zip -r python.zip python/
Lambdaの管理コンソールからLayersをクリックします
名称を入力して、先程作成してzipファイルをアップロードします
作成が完了しました
呼び出し側のLambda関数の作成
Layerを登録するために、Layersをクリックして、Add a Layerをクリックします
先程作成したLayerのARNを入力します
Layerの修正
コードを修正してzipにします
$ zip -r python.zip python/
adding: python/ (stored 0%)
adding: python/logger.py (deflated 36%)
この状況だとLambda関数に紐付いているLayerはバージョン1のままなのでバージョン2を登録します
お約束
投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。