LoginSignup
5
2

More than 5 years have passed since last update.

AWS Lambda Layersを試してみる

Posted at

はじめに

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自体もバージョン設定が可能です
image.png

今回は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をクリックします
image.png

Create layerをクリック
image.png

名称を入力して、先程作成してzipファイルをアップロードします

image.png

作成が完了しました

呼び出し側のLambda関数の作成

Create functionをクリック
image.png

image.png

Layerを登録するために、Layersをクリックして、Add a Layerをクリックします
image.png

先程作成したLayerのARNを入力します

image.png

Lambda関数を記述するために関数名をクリックします
image.png

サンプルコードを記述してSaveします
image.png

テストイベントの設定
image.png

image.png

Testを実行し、ログ出力されていることを確認します
image.png

Layerの修正

コードを修正してzipにします

$ zip -r python.zip python/
  adding: python/ (stored 0%)
  adding: python/logger.py (deflated 36%)

Create versionをクリック
image.png

先程のzipファイルを指定してCreate
image.png

この状況だとLambda関数に紐付いているLayerはバージョン1のままなのでバージョン2を登録します

バージョン2を登録します
image.png

古いバージョンを削除します
image.png

お約束

投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。

5
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
5
2