【问题标题】:Unable to import module in AWS Lambda (Python)无法在 AWS Lambda (Python) 中导入模块
【发布时间】:2017-02-27 19:36:03
【问题描述】:

我有一个名为foo.py 的python 脚本。它有一个 lambda 处理函数,定义如下:

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 文件,如下所示:

-foo.zip
    -foo.py
    -dependencies

我已将此 zip 文件上传到 AWS Lambda 并配置了一个 AWS Lambda 函数来运行 foo.handler。但是,每次我测试它时,我都会得到"errorMessage": "Unable to import module 'foo'"

有什么想法吗?

stat --format '%a' foo.py 显示664

【问题讨论】:

  • 你在哪里导入 foo.py?我不明白你为什么要导入你的“主要”Lambda 模块。

标签: python amazon-web-services aws-lambda


【解决方案1】:

所以,我在我的 lambda 函数中导入了 psycopg2,它需要 libpq.so,它与 Postgres 一起安装。 Postgres 没有安装在 lambda 环境中,所以导入 psycopg2 失败,这意味着亚马逊导入我的 lambda 函数也失败了。不过,这不是一个很有帮助的错误消息。

谢天谢地,有人构建了一个与 AWS lambda 配合使用的 psycopg2 版本:https://github.com/jkehler/awslambda-psycopg2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2018-09-18
    • 1970-01-01
    • 2019-01-05
    • 2020-10-05
    • 1970-01-01
    • 2019-02-23
    相关资源
    最近更新 更多