为什么在为 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)