无法在AWS Lambda(Python)中导入模块 [英] Unable to import module in AWS Lambda (Python)
问题描述
我有一个名为foo.py
的python脚本.它具有如下定义的lambda处理函数:
I have a python script named foo.py
. It has a lambda handler function defined like this:
def handler(event, context):
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
download_path = '/tmp/{}.gz'.format(key)
csv_path = '/tmp/{}.csv'.format(key)
... proceed to proprietary stuff
这是一个zip文件,如下所示:
This is in a zip file like so:
-foo.zip
-foo.py
-dependencies
我已将此zip文件上传到AWS Lambda并配置了一个AWS Lambda Function以运行foo.handler
.但是,每次测试时,都会得到"errorMessage": "Unable to import module 'foo'"
.
I have uploaded this zip file to AWS Lambda and configured an AWS Lambda Function to run foo.handler
. However, every time I test it, I get "errorMessage": "Unable to import module 'foo'"
.
有什么想法吗?
stat --format '%a' foo.py
显示664
推荐答案
因此,我在lambda函数中导入了psycopg2
,该函数需要libpq.so
,该函数随Postgres一起安装. Postgres未安装在lambda环境中,因此导入psycopg2
失败,这意味着,从扩展角度看,Amazon导入我的lambda函数也失败了.但是,这不是一个非常有用的错误消息.
So, I was importing psycopg2
in my lambda function, which requires libpq.so
, which installs with Postgres. Postgres isn't installed in the lambda environment, so importing psycopg2
failed, which meant that, by extension, Amazon's import of my lambda function also failed. Not a very helpful error message, though.
非常感谢,有人构建了与AWS lambda兼容的psycopg2
版本: https://github .com/jkehler/awslambda-psycopg2
Thankfully, somebody's built a version of psycopg2
that works with AWS lambda: https://github.com/jkehler/awslambda-psycopg2
这篇关于无法在AWS Lambda(Python)中导入模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!