在 AWS Lambda 上,Python Snappy 已经作为 ZIP 文件的一部分安装。但是,当您执行使用 Python Snappy 的 Lambda 函数时,可能会遇到以下错误:
ModuleNotFoundError: No module named 'snappy'
该错误的原因是因为 AWS Lambda 使用的是 Amazon Linux AMI,而文件的二进制文件是为 Amazon Linux 1 构建的,而不是为 Amazon Linux 2 或其他操作系统构建的。因此,您需要重新构建二进制文件并将其包含在您的 Lambda 函数中。
以下是
git clone https://github.com/andrix/python-snappy.git
cd python-snappy
python setup.py build_ext -i
例如,在您的本地项目文件夹中创建以下目录结构:
project_folder/ - handler.py - snappy/ - snappy.so
import os import sys sys.path.append(os.path.join(os.path.dirname(os.path.realpath(file)), "snappy")) import snappy
这将确保在 AWS Lambda 上正确导入 snappy 模块。
请注意,snappy 模块可能会有其他依赖项,例如 libsnappy.so 库。在本地计算机上进行构建时不需要担心这个问题,但在 AWS Lambda 上,您需要将所需的库文件和其他依赖项添加到 Lambda ZIP 包中。