質問: psycopg2.connect(host="***.compute-1.amazonaws.com", port=5432,dbname="***",user="***",password="***", sslmode='require')` ``` 参考:How to connect to a remote PostgreSQL database with Python 4. sslmode=requireを記載したところ、再度エラー。 ``` OperationalError: sslmode value "require" invalid when SSL support is not compiled in ``` 参考:Psycopg2 Python SSL Support is not compiled in 5. EC2のインスタンスを再作成し、postgresqlのインストール時に`--with-openssl`をつけた上で、再度実施。 `--with-openssl`を実施するには、`openssl-devel`をインストールする必要があるようなので合わせて実施。 ``` $ sudo yum -y install openssl-devel $ ./configure --prefix $PG_DIR --without-readline --without-zlib --with-openssl ``` 再度参考:AWS Lambda Pythonからpsycopg2でRDS PostgreSQLに接続する 6. 再度圧縮ファイルを作成の上、lambda上で実施したところ、上記のエラーが発生しました。 ### EC2の環境について python:2.7.10 postgresql: 9.5.3 (`psql --version`では表示されず。) psycopg:2-2.6.1 openssl:OpenSSL 1.0.1k-fips 8 Jan 2015 何かお気付きのところがございましたら、ご教授頂けますと幸いです。 よろしくお願いします。
回答: openssl の共有ライブラリが見つからないようです。 lambda_function.py と同じ zip ファイル内にライブラリを一式同梱する必要があるのではないでしょうか。 libpq を静的リンクしたのと同じように、openssl のライブラリも静的リンクできませんでしょうか。 あるいは、ld のオプションや環境変数 LD_LIBRARY_PATH を調整することにより、openssl の必要なものだけ引き抜いて psycopg2 に含めるようにできるかもしれません。 (参考) linuxでの共有ライブラリのリンクについて