はじめに
こんにちは。みんなのウェディングのインフラエンジニア横山です。
この記事はくふうカンパニーアドベントカレンダーの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
今回は内容を以下のようにしました。
def hello(name):
return f'Hello!! {name}'
続いてこちらのファイルをディレクトリごとzip圧縮します。
$ zip -r python.zip python/
圧縮したファイルをマネージメントコンソールからアップロードします。
次にLayerを利用するLambda関数を作成していきます。
まずはマネージメントコンソールで通常通りLambda関数を作成します。
Layersという項目があるのでそこから作成したLayerを設定していきます。
Layerを利用する側のLambda関数は以下のようにしました。こちらもマネージメントコンソールで入力していきます。
import layer
def lambda_handler(event, context):
print(layer.hello('wedding'))
今回はLambda関数に渡されるJSONデータはなんでも良いので、適当にテストを設定して実行します。
ログにhello!! wedding
と表示されました。成功です
まとめ
簡単にですがLayerの設定から実行までの流れをまとめてみました。
Ruby対応も嬉しいですが、AWs Lambda Layersも個人的には同じくらい嬉しいです。
くふうカンパニーアドベントカレンダー、5日目となる明日はryosterさんの「デザイナーがGatsby.jsを使った感想とか仲良くなれそうな方法を書いてみる」です。