我正在尝试在AWS Lambda上运行微服务,因为它需要NumPy和pymysql依赖项,所以我遵循了此处概述的步骤
我在将依赖项和代码上传到 S3 并尝试运行我的测试函数时收到此错误。
Traceback (most recent call last):
File "/var/runtime/awslambda/bootstrap.py", line 538, in <module>
main()
File "/var/runtime/awslambda/bootstrap.py", line 528, in main
run_init_handler(init_handler, invokeid)
File "/var/runtime/awslambda/bootstrap.py", line 94, in run_init_handler
init_handler()
TypeError: 'module' object is not callable
关于可能发生的事情的任何想法?它在我的 EC2 实例和本地计算机上运行良好
Lambda 现在有"层",现在可以/应该帮助你。
但对于未来的其他人,我也有完全相同的问题。
我刚刚完成了将单文件 Lambda Python 模块重构为一组文件,其中包括init.py
.事实证明,如果您有一个名为init.py
的模块位于包中的__init__.py
旁边,则 AWS 引导进程的某些部分无法处理导入或与导入相关的错误;文件在导入过程中是好的(函数超时(还是坏的(上面的回溯(。
我将init.py
重命名为connect.py
(因为我只为按需连接设置连接信息(,然后停止查看 OP 的回溯,并能够继续前进。
我没有尝试重现init*.py
模块名称的变体。
非常奇怪的边缘情况。
我也在无服务器应用程序中遇到过这个问题,事实证明这取决于处理程序在serverless.yaml
中的定义方式。引导程序将获取此值并尝试执行它。就我而言,它没有指向我的 python 文件中的函数,而是指向文件中的模块之一。
functions:
some_lambda:
handler: src/somefile.jwt
somefile.py 年,有 jwt 的进口。代码旨在调用 funcjwt_auth
但最终尝试调用 jwt 模块,导致 OP 看到的错误。