15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

くふうカンパニーAdvent Calendar 2018

Day 4

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

Last updated at Posted at 2018-12-03

はじめに

こんにちは。みんなのウェディングのインフラエンジニア横山です。
この記事はくふうカンパニーアドベントカレンダーの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を使った感想とか仲良くなれそうな方法を書いてみる」です。

15
11
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
15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?