【AWS】Lambdaで使うライブラリをインストールする方法

スポンサーリンク
【AWS】Lambdaで使うライブラリのインストール方法AWS
この記事を読んで分かること
  • Lambdaで使うライブラリのインストール手順
  • Lambda Layersのアップロード方法
  • Lambda Layersを適用する手順

 

Lambdaで使うライブラリのインストール方法

Lambdaで使うライブラリをインストールにはLambda Layersを使用します。

Lambda LayersはAWSの公式で予め用意されているものや有志の人が作ったものもありますが、既存のものがない場合は自分で作る必要があります。

 

Lambda Layersは.zipファイルとして作成し、Lambdaにアップロードして使います。

ただし、Lambda Layersのデプロイできる容量は250MB(非圧縮)となっているので、注意が必要です。

 

Lambda Layersの作成方法は以下の2つです。

Lambda Layersの作成方法

 

今回は amazon/aws-sam-cli-build-image の Docker イメージを使用する方法を解説していきます。

 

ライブラリのインストール手順

Lambda Layersの作成公式サイトの手順に従って行います。

 

dockerイメージのダウンロード

自分の使いたい環境のdocker imageをダウンロードしてください。

公式のdockerのイメージ一覧はこちらで提供されています。

今回はpython3.8の環境を選択しました。

docker pull public.ecr.aws/sam/build-python3.8

 

requirements.txtを作成する

インストールしたいライブラリの一覧をrequirements.txtに記述します。

pandasをインストールする例を示します。

requirements.txt
pandas

 

Lambda Layersのzipファイルを作成

まず、インストールしたいライブラリを適切なディレクトリ構造で作成します。

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.8" /bin/sh -c "pip install -r requirements.txt -t python/lib/python3.8/site-packages/; exit"

コマンドが成功するとpythonディレクトリが作成されます。

├ python
   ├ lib
       ├ python3.8
           ├ site-packages

 

作成されたディレクトリを.zipファイルに圧縮し、Lambda Layersとして使える形にします。

zip -r mypythonlibs.zip python > /dev/null

コマンドを実行するとmypythonlibs.zipが作成されました。

 

作成したLambda Layersをアップロード

作成したLambda LayersをAWSにアップロードします。

アップロードの方法には2種類あります。

Lambda Layersのアップロード方法
  • マネジメントコンソールからアップロード
  • AWS-cliを使ってアップロード

 

今回はAWS-cliを使ってアップロード方法を解説していきます。

 

AWS-cliを使う準備はこちらの記事に掲載しています。

【AWS】AWS-cliの使うために必要な準備
この記事を読んで分かること AWS-cliのインストール方法 AWS-cliの操作に必要なIAMユーザの作成方法 AWS-cliのコンフィグの設定方法 AWS-cliのインストール AWS-...

 

IAMの設定などAWS-cliを使う準備ができていればコマンド1つでアップロードすることができます。

aws lambda publish-layer-version --layer-name mypythonlibs --description "My python libs" --zip-file fileb://mypythonlibs.zip --compatible-runtimes "python3.8"

 

Lambda Layersを適用

アップロードしたLambda LayersをLambda環境に反映させます。

マネジメントコンソールを操作して設定を行うことができます。

 

lambdaのサービス画面で「Layers」を選択します。

lambda_layersを選択

 

レイヤーの項目から「レイヤーの追加」を選択します。

lambda_layersの追加を選択

 

「カスタムレイヤー」を選択します。

lambda_カスタムレイヤーを選択

 

適用したいレイヤー名を選択します。

lambda_作成したレイヤーを選択

 

適用したいレイヤーのバージョンを選択します。

lambda_作成したレイヤーのバージョンを選択

 

「追加」を選択するとレイヤーが反映されます。

lambda_追加を選択

 

動作確認

pandasをインポートしてlambdaを実行してみます。

import json
import pandas

def lambda_handler(event, context):
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

 

エラーも出ずに動作することを確認できればlayersがうまく適用できています。

Function Logs
START RequestId: f6b3376d-0c8e-4fc4-987e-f3f8bf64b1d9 Version: $LATEST
END RequestId: f6b3376d-0c8e-4fc4-987e-f3f8bf64b1d9
REPORT RequestId: f6b3376d-0c8e-4fc4-987e-f3f8bf64b1d9 Duration: 1.39 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 111 MB Init Duration: 837.75 ms

 

まとめ

Lambdaライブラリをインストールする手順について解説しました。

インストールするにはLambda Layersを作成する必要がありました。

Lambda Layers方法はAWS SAMを使う方法とDockerを使う2種類あり、今回はDockerを使った作成を行いました。

Lambda Layersを作成したあとはAWSにアップロードして、適用することができました。

 

参考文献

AWS公式サイト

 

コメント

タイトルとURLをコピーしました