python - 测试 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
工作正常而没有错误,所以我不确定是代码本身是问题所在。
感谢任何帮助,即使它只是为了了解错误消息可能是关于什么的。
解决方案
推荐阅读
- r - 如何删除每个 group_by 中的最后一行?
- haskell - Haskell中是否存在垃圾thunk的固有“携带成本”?
- python - 关于如何在单词列表上创建随机森林分类器的任何建议?
- spring-boot - liquibase.integration.spring.SpringLiquibase 可从 Spring Boot 中的 2 个位置错误获取
- python - int() 参数必须是字符串、类似字节的对象或数字,而不是“元组”
- java - 如何按逐行读取的字母字符串数组跳过和排序
- c - 如何传递类型泛型函数指针?
- javascript - RequireJS - 尚未为上下文加载模块名称“wget”
- r - 当正则表达式的一部分要保留在后续拆分的字符串中时,如何使用正则表达式拆分 R 中的字符串?
- javascript - 遍历 fetch() 调用列表