【发布时间】:2019-01-08 09:00:26
【问题描述】:
我正在尝试为 AWS Lambda 创建一个部署包,但无论我做什么,我都无法让它运行。这是我的过程:
1) 从AMI linked here 启动 AWS EC2 实例
2) 使用 Pip3 将我的所有依赖项安装到本地文件夹中,并通过 Yum 安装 Python 3.6。
3) 将依赖项通过 FTP 传输到我的本地计算机并使用我的 python 文件对其进行压缩。
我试图调用的确切代码是 login.py 中的“处理程序”方法。这就是我的 Lambda 函数的设置方式:
最后,这是我收到的实际错误消息,我已经做了所有我想到的事情似乎无法弄清楚:
非常感谢任何帮助!
编辑:这是python代码:
import sys
import logging
import rds_config
import bcrypt
import pymysql
#rds settings
rds_host = "xxx"
name = rds_config.db_username
password = rds_config.db_password
db_name = rds_config.db_name
logger = logging.getLogger()
logger.setLevel(logging.INFO)
try:
conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)
except:
logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
sys.exit()
logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
def handler(event, context):
accountData = None
accountEmail = event['userEmail']
accountPassword = event['userPassword']
with conn.cursor() as cur:
sql = "SELECT `id`, `email`, `password` FROM `accounts` WHERE `email`=%s"
cur.execute(sql, ('myEmail@testEmail.comn'))
accountData = cur.fetchone()
if accountData['email'] == accountEmail:
if bcrypt.hashpw(password, accountData['password']) == accountData['password']:
print('Returning Account Id: ' + str(accountData['id']))
return accountData['id']
else:
print("Invalid Credentials")
return "Invalid Credentials"
【问题讨论】:
-
在 login.py 中添加相关代码,特别是所有导入和处理函数。
-
没有什么奇怪的。看起来您的 zip 包已损坏或由于某些其他原因 AWS 无法解压缩它。尝试直接在函数代码窗口粘贴代码或新建一个zip包。
-
也尝试使用 7zip 或 WinZip 创建 zip 包,而不是 windows 内部压缩文件的东西。
-
检查文件扩展名。确保它不是 login.py.py。还要添加您的 requirements.txt 文件,我可以在最后尝试一下。
-
做了你所拥有的,没有错误。能够毫无问题地执行代码。我很确定您的文件名或扩展名有问题。
标签: python amazon-web-services aws-lambda