BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】Lambda上のPythonで外部ライブラリを使用する方法

はじめに

こんにちは、沖縄のコロナ状況が心配なBFT名古屋支店マカビです!
AWS LambdaでPythonの外部ライブラリを利用するために行ったことをご紹介します。
備忘録のようなものになりますが、参考にしてください!

事前情報

  • AWS Lambdaでは、Pythonの標準ライブラリまたはAWS SDK for Pythonしか利用できない
  • AWS Lambdaでは、pipコマンドを使用して外部ライブラリをインストールすることができない
  • AWS Lambdaで外部ライブラリを使用するためには以下の3つの方法がある
    1. すべてのモジュールをコピペで配置する
      →数が少なく、コードがGitHubなどに公開されているときに有効
    2. zipで固めた外部ライブラリをAWS Lambdaにアップロードする
    3. AWS Lambda Layersにzipで固めた外部ライブラリを配置する

今回は、2つ目の方法についてまとめています。

手順概要

  1. 作業ディレクトリの作成
  2. 外部ライブラリのインストール
  3. Lambda関数の作成
  4. zipコマンドで圧縮
  5. AWS Lambdaにアップロード

※上記手順1~4には、pipコマンドとzipコマンドが使用できる環境が必要です。

1.作業ディレクトリの作成

外部ライブラリをインストールするための作業ディレクトリを作成します。

# mkdir Work

2.外部ライブラリのインストール

手順1で作成したディレクトリに移動し、外部ライブラリをインストールします。
-tオプションでインストール先を指定することができます。
今回、zappixという外部ライブラリを作業ディレクトリにインストールしています。

# cd Work/
# pip install zappix -t .

3.Lambda関数の作成

lambda_function.pyを作成します。
中身はAWS Lambdaへアップロード後に修正できるので、今回は空ファイルのみ作成します。

# touch lambda_function.py
# chmod 755 lambda_function.py

4.zipコマンドで圧縮

zipコマンドで作業ディレクトリ配下のファイルを圧縮します。
-rオプションで再帰的に扱います。圧縮ファイル名は任意となります。

zip -r zappix.zip *

5.AWS Lambdaにアップロード

アップロード先はランタイムがPythonAWS Lambdaであることに注意してください。

  1. コードソースの右側にある「アップロード元」から「.zipファイル」を選択します。
    f:id:bftnagoya:20210617143846j:plain
    AWS Lambdaへアップロード
  2. 圧縮ファイルを選択し、「保存」をクリックします。
  3. 最後にlambda_function.pyのコードを書けば完了です。
    ※不要なファイル(初期に作成されるlambda_function.pyなど)を削除してください。

まとめ

AWS Lambdaで外部ライブラリを利用するために行うことを紹介しました。
アップロードしても外部ライブラリが利用できない場合は、AWS Lambdaのフォルダ構成(モジュールをimportするときどこからみているのか)を再度確認してみてください。