首页 > 解决方案 > 测试 python selenium web scraper 的代码时出现 AWS Lambda 错误

问题描述

我一直在努力让 AWS Lambda 运行我的代码。我正在关注https://robertorocha.info/setting-up-a-selenium-web-scraper-on-aws-lambda-with-python/。试图在需要 selenium 和 headless chrome 的 AWS Lambda 上运行网络爬虫。我会说我使用的是 windows 而不是 linux/mac。

本教程使用 lambci 复制 AWS Lambda 环境并安装 linux 依赖项。制作用于上传到 S3 以与 lambda 一起使用的最终 zip 文件时。

当我按照教程中所说的将 python 脚本放入文件夹 /src 时,它不会导入模块 lambda_function。当我将 python 文件本身放在 zip 中时,它似乎可以运行但出现此错误消息,我已经更改了 lambda 中的环境变量,以便看到 lambda_function.py。

{
  "errorMessage": "Unable to import module 'lambda_function': cannot import name 'WinDLL' from 'ctypes' (/var/lang/lib/python3.7/ctypes/__init__.py)",
  "errorType": "Runtime.ImportModuleError"
}

以下是我的要求:

boto3==1.6.18
botocore==1.9.18
selenium==3.141.0
chromedriver-install==1.0.3
numpy==1.18.2
requests==2.23.0

要上传到 S3 的 zip 文件的文件夹结构。

lambda_function.py
/lib
/bin

当我运行make docker-run时,代码运行良好,没有错误消息。出于某种原因,我在运行构建 lambda 包的 makefile 代码时收到错误消息。我手动完成了这部分,基本上是移动文件夹并压缩库,python 文件。我想知道这是否是我的错误所在。我在某处读到 numpy 不能很好地与 AWS Lambda 集成,但它在构建图像时使用了 linux .whl 文件,并且错误消息中没有提到它。

我试过用谷歌搜索错误信息,说实话并没有太多关于它的信息!我实际上不确定这意味着什么。

任何帮助,将不胜感激。如果您需要我发布我的 python 代码,那很好,但正如我所说, make docker-run工作正常而没有错误,所以我不确定是代码本身是问题所在。

感谢任何帮助,即使它只是为了了解错误消息可能是关于什么的。

标签: pythonamazon-web-servicesseleniumaws-lambda

解决方案


推荐阅读