AWS上传zip文件时成功创建lambda函数。但是当我测试它时,它会给出这个错误。
{
"errorMessage": "Unable to import module 'amazonSNS'"
}
以下是我创建的zip文件的内容。我尝试将zip文件的名称更改为" amazonSNS"匹配amazonSNS.py
文件,但没有帮助,同样的问题。
Lambda函数配置中的Lambda处理程序设置为" amazonSNS.handler"其中amazonSNS是文件名,处理程序是需要调用的函数名,正如文档中指示的那样。
以下是python文件的内容
import boto3
import MySQLdb
client = boto3.client("sns")
rds = boto3.client("rds")
def handler(event, context):
conn = MySQLdb.connect("host", "username", "password", "database")
cur = conn.cursor(MySQLdb.cursors.DictCursor)
query = "select * from login.login limit 10"
cur.execute(query)
print cur.fetchall()
print conn
这可能是什么问题?
这是日志输出
START RequestId:76a61551-052a-11e6-b466-8fa0769ac309版本:$ LATEST 无法导入模块' amazonSNS':没有名为_mysql的模块
END RequestId:76a61551-052a-11e6-b466-8fa0769ac309 REPORT RequestId: 76a61551-052a-11e6-b466-8fa0769ac309持续时间:0.33毫秒 持续时间:100毫秒
更新
我在" site-package"中添加了一些文件。我认为是MySQLdb包的一部分的文件夹,这是zip文件的当前内容。
在此之后,新的错误日志是。
START RequestId:c0715d9a-0531-11e6-9409-a3b194fd4afd版本:$ LATEST 无法导入模块' amazonSNS':libmysqlclient.so.18:无法打开 共享对象文件:没有这样的文件或目录
END RequestId:c0715d9a-0531-11e6-9409-a3b194fd4afd REPORT RequestId: c0715d9a-0531-11e6-9409-a3b194fd4afd持续时间:0.35毫秒 持续时间:100毫秒内存大小:128 MB最大使用内存:22 MB
答案 0 :(得分:4)
要解决此问题: 我搜索了libmysqlclient.so.20(最后的版本号可能不同)
find /. -name "libmysqlclient.so.20"
我的输出是
/./usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
然后我将该文件复制到我的包
的根目录中cp /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 <your package path>
答案 1 :(得分:1)
使用mysqlclient(适用于Python3的MySQLd fork)时遇到了这个问题。
由于我使用Zappa进行简单部署,解决方案很简单:只需切换到原始MySQLd软件包(但不支持Python 3):pip install mysql-python
Zappa预先编译了version。
答案 2 :(得分:0)
你是如何安装MySQLdb的? http://mysql-python.sourceforge.net/FAQ.html说:
ImportError:没有名为_mysql的模块 如果你看到这个,那么你在安装MySQLdb时可能会出错;重读(或读取)自述文件。 _mysql是与MySQL客户端库连接的低级C模块。
如果您还没有使用pip安装MySQLdb。
答案 3 :(得分:0)
我无法编译b
以使其在Lambda中运行。相反,我切换到MySQL-python
。我不确定性能,但至少可行。
P.S。我想知道为什么在亚马逊上没有关于建议的MySQL驱动程序的官方建议。至少我还没找到。