Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

こんにちは。みんなのウェディングのインフラエンジニア横山です。
この記事はくふうカンパニーアドベントカレンダーの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/

圧縮したファイルをマネージメントコンソールからアップロードします。
スクリーンショット 2018-12-03 12.23.50.png

次にLayerを利用するLambda関数を作成していきます。
まずはマネージメントコンソールで通常通りLambda関数を作成します。
スクリーンショット 2018-12-03 12.25.22.png

Layersという項目があるのでそこから作成したLayerを設定していきます。
スクリーンショット 2018-12-03 12.26.44.png

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

lambda_function.py
import layer

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

今回はLambda関数に渡されるJSONデータはなんでも良いので、適当にテストを設定して実行します。
スクリーンショット 2018-12-03 12.31.24.png

ログにhello!! weddingと表示されました。成功です :hugging:
スクリーンショット 2018-12-03 12.31.55.png

まとめ

簡単にですがLayerの設定から実行までの流れをまとめてみました。
Ruby対応も嬉しいですが、AWs Lambda Layersも個人的には同じくらい嬉しいです。
くふうカンパニーアドベントカレンダー、5日目となる明日はryosterさんの「デザイナーがGatsby.jsを使った感想とか仲良くなれそうな方法を書いてみる」です。

tatsuo48
とあるHamee株式会社でごにょごにょ
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away