AWS Lambda python 库函数错误



我正在尝试使用 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"没有属性"连接">

我检查了pymysql仅在具有代码的目录中可用,因此我不知道为什么无法使用连接方法。两个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文档非常差。

  1. 首先在本地机器上创建一个目录,例如:"package-dir">

  2. 现在将 pymlsql 安装到您创建的目录路径 "pip install pymlsql -t path/to/package-dir">

  3. 将你的python脚本粘贴到同一个文档

  4. 选择目录中的所有项目并创建一个 zip 文件。不要压缩目录本身,这非常重要

  5. 在lambda中上传zip文件,它应该可以工作

  6. 另请参阅处理程序名称为"python_script_name.lambda_handler"。例如:如果您的脚本文件名是"lambda_function.py",那么您的处理程序应该是"lambda_function.lambda_handler">

最新更新