我正在使用cloudformation创建我的lambda函数。我选择从S3中提取代码。
但是,在创建lambda函数时,它似乎创建了一个嵌套结构,并且我无法导入我的包,除非我将lambda
和相关的库包向上移动到lambda函数的根级别。
代码段的CloudFormation值:
Code:
S3Bucket: youll_never_guess-bucket-12345
S3Key: python_data_collector.zip
它在aws控制台lambda中的显示方式:
控制台中处理程序的完整路径:我已经尝试过:python_data_collector/lambda.lambda_handler
和python_data_collector.lambda.lambda_handler
错误消息:
Unable to import module 'python_data_collector/lambda': No module named 'requests'"
发布于 2021-11-15 15:18:12
Python依赖项应该位于lambda部署包的根级别。您确实可以将嵌套文件指向函数的入口点,但这不会更改函数的依赖行为。
但是,您的lambda代码的结构与您的压缩文件在S3存储桶中的位置无关。假设,当您创建zip文件时,您在根级别添加了一个包含代码&依赖项的文件夹。您不应该在zip文件中有额外的文件夹,而只是将代码(嵌套的或不嵌套的)和依赖项(不嵌套)放在zip包的根目录下。Lambda只需解压缩文件,并按原样将内容放入lambda函数中。
https://stackoverflow.com/questions/69969532
复制相似问题