lambda python函数与外部库psycopg2 - 没有名为psycopg2的模块

时间:2016-09-15 02:21:19

标签: python python-2.7 lambda aws-lambda

错误消息 - 没有名为psycopg2的模块
zip中使用的文件 - https://github.com/jkehler/awslambda-psycopg2
代码片段 -

    #!/usr/bin/python
import psycopg2
import sys
import pprint
import datetime

def lambda_handler(event, context):

#Connect to RedShift
conn_string = "dbname='XXXX' port='5439' user='XXX' password='XXXX' host='XXXXXXXXXXXX'";

conn = psycopg2.connect(conn_string);
cursor = conn.cursor();

cursor.execute("begin transaction");
cursor.execute("truncate table XXXX");
cursor.execute("truncate table XXXX");
cursor.execute("truncate table XXXX");
cursor.execute("delete from XXXX");
cursor.execute("insert into XXXX");
cursor.execute("truncate table XXXX");
cursor.execute("truncate table XXXX");
cursor.execute("truncate table XXXX");
cursor.execute("end transaction");

conn.commit();
conn.close();


将Windows中的psycopg2提取并复制到我的AWS Lambda zip包中以及我的python文件和站点包。
我错过了什么吗?

修改
通过在Amazon Linux上压缩文件来重新创建包。还是一样的错误。

1 个答案:

答案 0 :(得分:1)

psycopg2是一个已编译的模块。复制Windows版本不起作用,因为Lambda运行在Amazon Linux之上。根据{{​​3}},可以在lambda上运行本机可执行文件和库,但是您需要找到一种方法来为该平台构建psycopg2并静态链接其所有库或捆绑动态库。除非您熟悉C和Python工具链或其他人已经为您完成此工作,否则这可能具有挑战性。