【问题标题】:AWS Lambda Function cannot find my python codeAWS Lambda 函数找不到我的 python 代码
【发布时间】:2019-01-08 09:00:26
【问题描述】:

我正在尝试为 AWS Lambda 创建一个部署包,但无论我做什么,我都无法让它运行。这是我的过程:

1) 从AMI linked here 启动 AWS EC2 实例

2) 使用 Pip3 将我的所有依赖项安装到本地文件夹中,并通过 Yum 安装 Python 3.6。

3) 将依赖项通过 FTP 传输到我的本地计算机并使用我的 python 文件对其进行压缩。

我的文件夹结构正常:

我的文件夹结构 INSIDE zip:

我试图调用的确切代码是 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


【解决方案1】:

我需要将一个名为 .libs_cffi_backend 的目录从我的 EC2 实例添加到 .zip,然后将其上传到 Lambda 以允许我的所有 pip 库正常工作。

【讨论】:

    猜你喜欢
    • 2018-07-07
    • 2018-11-09
    • 2020-11-12
    • 2021-11-20
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2016-12-21
    相关资源
    最近更新 更多