はじめに
AWS Lambda はサーバレスでイベント駆動型のコンピューティングサービスであり、非常に手軽に使えるサービスとなっている。Amazon S3 のような AWS の他サービスから Lambda をトリガーすることもでき、使い勝手が良いのだがサードパーティ製ライブラリを扱う際にはひと手間かかってしまう。そこで本記事では、Python のサードパーティ製ライブラリを Lambda で扱うための方法を紹介する。How to use external libraries in Lambda Function、Managing external libraries in AWS lambda functions を参考にした。公式ドキュメントはこちら。
準備
まず Lambda を準備する。はじめにで述べた S3 にファイルが置かれるとそれをトリガーに Lambda が実行されるようなものはチュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出すを参考にすれば作成可能。ランタイムは Python3.7 とした。
次に扱いたいライブラリの zip ファイルを作成する。以降、このファイルを読み込んでレイヤーを作成し、Lambda に追加することでライブラリを扱えるようになる。具体的な手順は以下。仮想環境など、仮に環境が変わっても問題ない状況で行うのが望ましい。今回はライブラリとして FastAPI をインストールする。
$ mkdir -p build/python/lib/python3.7/site-packages
$ pip install fastapi -t build/python/lib/python3.7/site-packages
上記の python
フォルダを zip ファイルにしておく。
レイヤー作成・追加
AWS マネジメントコンソール上で操作をしていく。まずレイヤーの作成を行う。左側のナビゲーションメニューから「レイヤー」を選択し、画面右上「レイヤーの作成」をクリック。以下画像のように、名前・ランタイムの設定、さらに「.zip ファイルをアップロード」を選択して先程作成した zip ファイルをアップロードし、「作成」をクリック。
作成後に以下のような画面が出るので、バージョン ARN をコピーしておく。
次にレイヤーの追加を行う。左側のナビゲーションメニューから「関数」を選択し、レイヤーを追加したい Lambda 関数を選択。画面下へスクロールし、「レイヤーの追加」を選択。以下画像のように、「ARN を指定」を選択し、先ほどコピーしたバージョン ARN を入力して「追加」をクリック。
以上で、サードパーティ製ライブラリを扱えるようになる。
おわりに
AWS Lambda にて、サードパーティ製ライブラリを扱えるよう関数にレイヤーを追加した。もっと Lambda を活用していきたい。