Edited at

AWS Lambda Layersを使ってみた!(Python)


はじめに

こんにちは。みんなのウェディングのインフラエンジニア横山です。

この記事はくふうカンパニーアドベントカレンダーの4日目になります。

今回は、re:Invent2018で発表されたAWS Lambda LayersをPythonで使ってみたのでまとめていきます。


AWS Lambda Layers

AWS Lambda Layersとは複数のLambda関数で共通利用したい処理をまとめておける機能です。

Lambdaを書いていると、Slackへの通知処理など複数のLambda関数で同じような処理を書いていることに気づくと思います。

AWS Lambda Layersを使うと、こういった処理をLambda関数から切り離し、Layerとすることで、複数のLambda関数で再利用することが可能になります。


使い方

まずはlayerとなる関数を作成します。ファイル名はなんでも良いですが、pythonディレクトリを作成してその直下に作るようにしてください。

ディレクトリ名が異なると動きません。ここで30分ほどハマりました。。

$ mkdir python

$ touch python/layer.py

今回は内容を以下のようにしました。


layer.py

def hello(name):

return f'Hello!! {name}'

続いてこちらのファイルをディレクトリごとzip圧縮します。

$ zip -r python.zip python/

圧縮したファイルをマネージメントコンソールからアップロードします。

次にLayerを利用するLambda関数を作成していきます。

まずはマネージメントコンソールで通常通りLambda関数を作成します。

Layersという項目があるのでそこから作成したLayerを設定していきます。

Layerを利用する側のLambda関数は以下のようにしました。こちらもマネージメントコンソールで入力していきます。


lambda_function.py

import layer

def lambda_handler(event, context):
print(layer.hello('wedding'))


今回はLambda関数に渡されるJSONデータはなんでも良いので、適当にテストを設定して実行します。

ログにhello!! weddingと表示されました。成功です :hugging:


まとめ

簡単にですがLayerの設定から実行までの流れをまとめてみました。

Ruby対応も嬉しいですが、AWs Lambda Layersも個人的には同じくらい嬉しいです。

くふうカンパニーアドベントカレンダー、5日目となる明日はryosterさんの「デザイナーがGatsby.jsを使った感想とか仲良くなれそうな方法を書いてみる」です。