猿问

在 aws lambda 上运行时如何解决 python 中的 cx_Oracle 问题

我在 aws lambda 上测试时遇到了以下错误消息。


Unable to import module 'lambda_handler': No module named 'cx_Oracle'


这个 lambda 由 python 代码组成,但在我的本地主机上特别有效。


另外,我pip install cx_Oracle -t ./在 lambda_handler.py 文件路径的同一级别上执行命令,并且上传的 zip 文件的文件路径在此之下。


./lambda_handler.py


./cx_Oracle.cp36-win_amd64.pyd


./cx_Oracle-6.4.1.dist-info/*


./cx_Oracle-doc/*

我不明白为什么 lambda_handler 只能cx_Oracle library在 lambda 函数中找不到。


我错过了什么?


import cx_Oracle

import boto3

from docutils.nodes import row


def lambda_handler(event, context):


    url = 'myOracleUrl'

    user = 'myOralceUserId'

    pwd = 'myOraclePwd'

    con = cx_Oracle.connect(user + '/' + pwd + '@' + url)

    cur = con.cursor()

    cur.execute("select 1 from dual")

    cur.close()

    con.close()


    return {

        "statusCode": 200,

        "body": context.invoked_function_arn

    }


神不在的星期二
浏览 128回答 3
3回答

POPMUISE

cx_Oracle不仅需要pip install,还需要轮子依赖的本机 Oracle 客户端。Lambda 函数在具有有限选择的本机库的 EC2 上运行。就其价值而言,几乎所有 RDBMS 都会遇到同样的问题——PostgreSQL、MySQL 等。有关更多信息,请参阅本文:http : //kb.sites.apiit.edu.my/knowledge-base/articles/aws/aws-chalice-deployment-with-oracle-vendor/请注意,它用于基于 Chalice 的部署,但底层要求是相同的。
随时随地看视频慕课网APP

相关分类

Python
我要回答