[ServerlessFramework] AWS Lambda(Python3.6)でpsycopg2を使うのにハマッたこと

まず成功したもの

requirements.txt

psycopg2===2.7.4

serverless.yml

plugins:
  - serverless-python-requirements
custom:
  pythonRequirements:
    noDeploy: []
    dockerizePip: true

ダメだったもの

(1)psycopg2のバージョンが2.8系

requirements.txt

psycopg2===2.8.2
psycopg2-binary===2.8.2

sls deploy時に以下のエラーがでて諦めました。

  Error --------------------------------------------------

  Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-u10g_zpo/psycopg2/
You are using pip version 19.0.3, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

docker内のバージョンってことかしら…ひとまず諦める

$ pip --version
pip 19.1.1 

(2)dockerizePip: non-linux

dockerizePip: non-linux にしてあげると psycopg2===2.8.2 でもビルドは成功しますが、
Lambdaを叩くとエラーになった。

ImportError: libpq.so.5: cannot open shared object file: No such file or directory

そもそもdockerizePipを使用しないのも同じ結果

ほかに試したけど時間かかりそうなので挫折したもの

軽く試したけどダメでした(すません)

https://github.com/jkehler/awslambda-psycopg2
https://github.com/Miserlou/lambda-packages

おわり

pipバージョンの問題がわかれば 2.8系も行けそうな気はします(わかる方いらっしゃったら教えてくださいmm)

以上です。

サーバサイドエンジニア。オムライスが好物

シェアする

  • このエントリーをはてなブックマークに追加

フォローする