为什么在为 Python 创建自定义 AWS Lambda 层时无法导入模块?
Why do I get unable to import module when creating a custom AWS Lambda Layer for Python?
我有一个名为 custom_module.py
的模块,其中包含我想在几个不同的 Lambda 中使用的函数和方法。代码如下所示:
def test():
return 'Custom module'
我试图通过压缩此文件并使用表单创建层来将其转换为 Lambda 层。一切似乎都很好,我将模块导入到我的 Lambda 中使用,如下所示:
import json
from custom_module import test
print('Loading function')
def lambda_handler(event, context):
return test()
不幸的是,运行 这个 returns 一个 "Unable to import module 'lambda_function': No module named 'custom_module'"
错误。我到底做错了什么?我也指定了正确的运行时和体系结构。
编辑
根据评论,我尝试了这个文件结构:
layer
|
+--- python
|
+--- custom_module
|
+--- __init__.py (contains the test() method)
我将 layer
文件夹压缩为 layer.zip
并上传了。不幸的是仍然遇到同样的问题。
根据 docs,对于 Python 运行时,Lambda 层应该只有 1 个名为 python
的子文件夹,以便 Lambda无需指定路径即可访问图层内容(或者需要是python/lib/python3.9/site-packages
内的站点包)。
您有 2 个子文件夹 - layer
,然后是 python
。
更改您的文件结构,使您的 custom_module
仅位于 python
文件夹中。
layer.zip
|
+--- python
|
+--- custom_module
|
+--- __init__.py (contains the test() method)
我有一个名为 custom_module.py
的模块,其中包含我想在几个不同的 Lambda 中使用的函数和方法。代码如下所示:
def test():
return 'Custom module'
我试图通过压缩此文件并使用表单创建层来将其转换为 Lambda 层。一切似乎都很好,我将模块导入到我的 Lambda 中使用,如下所示:
import json
from custom_module import test
print('Loading function')
def lambda_handler(event, context):
return test()
不幸的是,运行 这个 returns 一个 "Unable to import module 'lambda_function': No module named 'custom_module'"
错误。我到底做错了什么?我也指定了正确的运行时和体系结构。
编辑
根据评论,我尝试了这个文件结构:
layer
|
+--- python
|
+--- custom_module
|
+--- __init__.py (contains the test() method)
我将 layer
文件夹压缩为 layer.zip
并上传了。不幸的是仍然遇到同样的问题。
根据 docs,对于 Python 运行时,Lambda 层应该只有 1 个名为 python
的子文件夹,以便 Lambda无需指定路径即可访问图层内容(或者需要是python/lib/python3.9/site-packages
内的站点包)。
您有 2 个子文件夹 - layer
,然后是 python
。
更改您的文件结构,使您的 custom_module
仅位于 python
文件夹中。
layer.zip
|
+--- python
|
+--- custom_module
|
+--- __init__.py (contains the test() method)