6
Help us understand the problem. What are the problem?

posted at

updated at

Organization

【AWS】Lambda関数のLayerを使ってみた

1.はじめに

どうも、ARIの名古屋支社に勤務している愛知県民です♪
(/・ω・)/

先日、AWSのLambda関数をテストしようとしたところ、以下のエラーが出ました。

010_エラー.png

どうやら、必要なライブラリが含まれていないことが原因のようですが、
他にも同じライブラリを使うLambda関数を作成予定だったため、
「いちいち設定するのは面倒だな・・・」と思いました。

解決する方法がないか、調べたところ、
Lambda関数のLayerという設定を使うことで、
複数のLambda関数に同じライブラリを入れられるようです!

そこで今回はLambda関数にLayerを設定する方法を記事にしてみたいと思います♪
AWSやLambda関数について勉強中の方の参考になれば幸いです。
(*^^)v

2.用語の説明

2.1.Lambdaとは

LambdaとはAWSのサービスの1つで、コードを書くだけで即実行ができるサービスのことです。
サーバの設定等が不要なため、便利です。

ただし、15分以上続けて実行することはできないため、
複雑なアプリケーションの場合はEC2やECRでの実行が必要となります。

3.前提条件

前提条件を以下に示します。

  • Lambda関数がpythonで書かれていること
  • TeraTermがインストールされていること
  • EC2が起動中であること

本記事はpythonで書かれたLambda関数を使用しますが、Node.jsでも同様にできると思います。
(後日、記事にするかも・・・)

本記事はEC2にTeraTermで接続するため上記が前提条件となりますが、
コマンドプロンプト等でも同様の作業ができると思います。

4.ライブラリが含まれたzipファイルを作成する

まずは、ライブラリが含まれているzipファイルを作成します。

4.1.TeraTermを起動し、EC2インスタンスにSSH接続します。

EC2インスタンスを作成・起動してTeraTermからSSH接続する方法については、以下の記事をご確認ください。

https://qiita.com/Aichi_Lover/items/3471b1ba710e995ffd80

4.2.以下のコマンドを実行し、pipコマンドを使用できるようにします。

mkdir python 
cd python
curl -O https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py --user

4.3.以下のコマンドを実行し、ライブラリをインストールします。

例として、ライブラリ「phonenumbers」と「requests」をインストールします

pip install -t ./ phonenumbers
pip install -t ./ requests

4.4.以下のコマンドを実行し、ライブラリが含まれたzipファイルを作成します。

cd ..
zip -r Layer.zip python

4.5.「ファイル」を選択し、「SSH SCP」を選択します。

110_SSH_SCP.png

4.6.Fromには「/home/ec2-user/Layer.zip」を入力し、ToにはPC上のパスを入力し、「Receive」を選択します。

120_SSH_SCPの設定.png

4.7.前手順で指定したPC上のパスを確認し、ファイルがダウンロードされていることを確認します。

130_ダウンロードを確認.png

5.Layerを作成する

5.1.AWSにログインし、Lambda関数の管理画面から「レイヤー」を選択します。

140_レイヤーを選択.png

5.2.「レイヤーの作成」を選択します。

150_レイヤーの作成を選択.png

5.3.以下の表のとおりに設定し、「作成」を選択します。

項目 設定内容
名前 (任意)
説明 (任意)
.zipファイルをアップロード チェックあり
アップロード (4節で作成したzipファイルを選択)
x86_64 チェックあり
互換性のあるランタイム (PythonX.Xを選択)
160_レイヤ設定.png

6.Lambda関数にLayerを設定する

6.1.ライブラリを入れたいLambda関数の管理画面を開き、下の方にある、「レイヤーの追加」を選択します。

170_レイヤの追加を選択.png

6.2.「カスタムレイヤー」を選択し、5節で作成したレイヤーを選択します。

180_レイヤを選択.png

6.3.以上で設定は完了です。6節の手順を複数のLambda関数に実施することで、同じライブラリを設定することができます。

7.おわりに

ここまで読んで下さり、ありがとうございます!!!
(^^)

複数のLambda関数に同じライブラリが必要な時に、
Layerを使用すると設定の手間が省けてとても便利でした♪
次回も気になったことがあれば記事にしたいと思います!
(:3_ヽ)_

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
6
Help us understand the problem. What are the problem?