Lambda関数でPythonライブラリを使用する
LambdaのPython3ランタイムで実行する関数とライブラリはデプロイパッケージという仕組みで作成することができます。
関数とライブラリをzipにまとめる
ソースコード本体とプログラム実行に必要なライブラリをzipファイルにまとめたものをLambdaデプロイパッケージといい、それをLambda関数へアップロードすることで有効化できるようになります。
(注意)デプロイパッケージはAmazon Linux環境で作成する
Lambda関数が実行されるLambdaコンテナと呼ばれる環境はAmazon Linuxが稼働しているため、デプロイパッケージの作成も基本的にAmazon Linux環境で行う必要があります。
本記事の検証時はデプロイパッケージの開発環境としてAmazon Linux版のEC2インスタンスを起動し、そこにPython3のvenv環境を利用して必要なライブラリのインストールとコードをまとめています。
(参考)
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html
Pythonランタイム
ソースファイルをzipに含める
関数のソースファイルのパスへ移動
cd /home/ec2-user/app/
zipを作成する
zip -r lambda_function.zip lambda_function.py
必要なPythonライブラリをzipに追加する
インストールされているライブラリが存在するパスへ移動
(devはvenv作成用のディレクトリ)
対象のライブラリファイルも先に作成したzipファイルに含める(必要な分だけ)
zip -r /home/ec2-user/app/lambda_function.zip ライブラリファイル名
※作成するzipの中に親ディレクトリは作成せず、ソースファイルとライブラリファイルを直下に含む形にします。
デプロイパッケージを有効化する
zip形式のデプロイパッケージを作成出来たら、Lambda関数の編集画面からそのままアップロードします。
コンソールからLambda > 関数 > 対象を選択 > 「コード」タブ
右上の「アップロード元」を選択し、.zipファイルを選択。
用意しておいたデプロイパッケージをアップロードして保存すると、
ソースコードとライブラリファイルがLambda関数のプロジェクトに展開されます。
(既存のソースは上書きされます)
これでライブラリ込みの関数が実行可能となります。