質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

6560閲覧

AWS lambdaから、herokuのpostgresqlに接続できない

HirooTakizawa

総合スコア12

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2016/07/04 11:12

編集2016/07/04 11:18

はじめに

質問させていただきます。(同様の質問をStackOverFlowにもさせていただいております。)
AWS lambda上でサイトをクロールし、得たデータをherokuのpostgresqlに保存しようと思っています。
試行錯誤した結果、下記のエラーでつまづいてしまっております。


発生しているエラー

lambda上で実行したところ、下記のエラーが発生しました。

START RequestId: efa28639-4100-11e6-a067-15a65cffa43f Version: $LATEST

Unable to import module 'lambda_function': /var/task/psycopg2/_psycopg.so: undefined symbol: ASN1_STRING_length
END RequestId: efa28639-4100-11e6-a067-15a65cffa43f
REPORT RequestId: efa28639-4100-11e6-a067-15a65cffa43f Duration: 0.28 ms Billed Duration: 100 ms Memory Size: 128 MB


作業過程

このエラーが発生するまで、環境等を変更しながら幾つかの作業を行いました。
(主にpsycopg2周り)
その過程について、下記記載させていただきます。

1. macで圧縮ファイルを作成の上、lambdaにアップロードしたところ、psycopg2のエラー

下記のリンクを参考に圧縮ファイルを作成しましたが、動作しませんでした。

参考:AWS LambdaでPythonをSchedule実行させる

2. libpqを静的リンクさせる必要があるようなので、lambda実行環境と同じAMIでEC2を起動。

EC2上でpsycopg2をインストールした上で、圧縮ファイルを作成しようと考えました。

参考:AWS Lambda Pythonからpsycopg2でRDS PostgreSQLに接続する

3. 圧縮ファイルを作成の上、再度lambdaにアップロードしたところ、エラー。

FATAL: no pg_hba.conf entry for host "", user "", database "", SSL off : OperationalError Traceback (most recent call last): File "/var/task/lambda_function.py", line 22, in main connector = psycopg2.connect(host=".compute-1.amazonaws.com",port=5432,dbname="",user="",password="") File "/var/task/psycopg2/init.py", line 164, in connect conn = _connect(dsn, connection_factory=connection_factory, async=async) OperationalError: FATAL: no pg_hba.conf entry for host "", user "", database "***", SSL off

どうやら、postgresqlの接続時にsslmode='require'のオプションを記載する必要があるようなので記載。

connector = 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


何かお気付きのところがございましたら、ご教授頂けますと幸いです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

上記を利用するとどうでしょうか。SSL 対応のものもあるようです。

投稿2016/07/08 18:21

iktakahiro

総合スコア142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HirooTakizawa

2016/07/12 13:11

確認が遅れ、申し訳ございません。コメントありがとうございます! 「with_ssl_support」を試したところ、無事接続ができました。 (別途、データの保存時にでエラーが発生してるようですので、引き続き確認させていただきます。) 大変助かりました、ありがとうございます。 (先日のPythonエンジニア養成読本読書会でお世話になったものです。 その際もありがとうございました。)
iktakahiro

2016/07/12 13:21

ご丁寧にありがとうございます。わずかでもお役にたったようでよかったです。Redshift への接続にも必要なものですし、この点は公式のサポートになるといいですね。 > (先日のPythonエンジニア養成読本読書会 そうでしたか!またぜひよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問