1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Lambda で外部ライブラリ(psycopg2)を使用する

Posted at

はじめに

Lambdaでpsycopg2を使うためには、デプロイパッケージを作成しアップロードする必要があります。
(複数のLambda関数で使用する場合など、Lambdaレイヤーを作成し共通部品化する方法もあります。)

参考

デプロイパッケージの作成

$ mkdir -p hoge-function/package
$ touch hoge-function/lambda_function.py
$ pip install psycopg2-binary -t ./hoge-function/package/

**フォルダ構成 (zip前)
hoge-function
| lambda_function.py
| package
  | psycopg2-binary
  | psycopg2-binary-info

$ cd ./hoge-function/package/

# psycopg2-binaryをzipファイルに含める
$ zip -r ../my-deployment-package.zip .

$ cd ..

# lambda_function.pyをzipファイルに含める
$ zip -r ../my-deployment-package.zip lambda_function.py

**フォルダ構成(zip後)
hoge-function
| my-deployment-package.zip
| lambda_function.py
| package
  | psycopg2-binary
  | psycopg2-binary-info

必要最小限のものだけをインストールしたいのでpsycopg2-binary をインストールしています。
(外部ライブラリやコンパイラが必要なくスタンドアローンなパッケージとして作成されているもの)

#Lambdaにアップロード

$ aws s3 cp hoge-function/my-deployment-package.zip S3://{Bucket-name}/{Path}/~

今回は、S3にアップロードし、LambdaコンソールからS3バケットを指定し、デプロイパッケージをアップロードします。
以下の手順でアップロードすれば完了です。

スクリーンショット 2022-02-05 10.23.12.png
スクリーンショット 2022-02-05 10.22.57.png

#トラブルシューティング

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'psycopg2._psycopg'

関数実行時に上記エラーが出ました。

私の場合は、ライブラリをインストールした環境のpythonバージョンとLambdaのランタイムバージョンを合わせることで解決しました。

スクリーンショット 2022-02-05 10.28.15.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?