AWS Lambda で (標準パッケージ以外の) 外部パッケージを利用したい場合は、Python のソースコードと依存するパッケージを .zip アーカイブにして、Lambda へアップロードする必要があります。 詳しくは AWS Lambda Deployment Package in Python に記載されていますが、boto3
だけは例外的に .zip へ含める必要がありません。 AWS の公式ドキュメントでは、依存モジュールを .zip アーカイブへ含める際に以下のような手順になっていました。
| ~/my-function$ pip install --target ./package Pillow
~/my-function/package$ zip -r9 ${OLDPWD}/function.zip .
~/my-function/package$ cd $OLDPWD
~/my-function$ zip -g function.zip lambda_function.py
|
ネット上の公開情報では zip -r *
しているケースをよく見るのですが、bash で作業する場合、これでは .
で始まる隠しファイル/隠しディレクトリは .zip ファイルに含まれません。 これらを含めたい場合は AWS 公式ページにあるように zip -r .
とピリオドを使う必要があります。 現在ディレクトリのひとつ上のディレクトリに AWS Lambda アップロード用の .zip ファイルを作成するには、例えば以下のように実行します。
| zip -r ../lambda_function.zip .
|