[英]AWS Lambda python library function error
我正在尝试使用 AWS Lambda 连接到 AWS RDS。 我将 PyMySQL 安装到该目录并使用以下代码和库构建了包
import sys
import pymysql
def lambda_handler(event, context):
string=""
try:
connection = pymysql.connect(host='',
user='',
password='',
db='',
charset='',
cursorclass=pymysql.cursors.DictCursor)
cur = connection.cursor(pymysql.cursors.DictCursor)
cur.execute("select * from table")
for row in cur:
print(row['col'])
string+=row['col']
except Exception as e:
print("MySQL error: %s" % (e.args[0]))
return string
print(lambda_handler("",""))
在我的机器上,上面的代码有效,但在 AWS 中,它显示
MySQL 错误:模块 'pymysql' 没有属性 'connect'
我查了一下pymysql只在有代码的目录下可用,所以不知道为什么不能使用connect方法。 两个 Python 版本是相同的。
编辑:
Traceback (most recent call last):
File "/var/task/lambda.py", line 7, in lambda_handler
connection = pymysql.connect(host='',
AttributeError: module 'pymysql' has no attribute 'connect'
试试zip -r package.zip *
我怀疑您只压缩了 pymysql 模块的顶层,而不是其子目录的内容
用于上传到 lambda 的 AWS 文档非常糟糕。
首先在本地机器上创建一个目录,例如:“package-dir”
现在将 pymlsql 安装到您创建的目录路径“pip install pymlsql -t path/to/package-dir”
将你的 python 脚本粘贴到同一个目录
选择目录中的所有项目并创建一个 zip 文件。 不要压缩目录本身,这很重要
在 lambda 中上传 zip 文件,它应该可以工作
另请参阅处理程序名称是“python_script_name.lambda_handler”。 例如:如果您的脚本文件名是“lambda_function.py”,那么您的处理程序应该是“lambda_function.lambda_handler”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.