AWS "Hello World" Python Lambda results in Runtime.ImportModuleError: "Unable to import module"
AWS "Hello World" Python Lambda results in Runtime.ImportModuleError: "Unable to import module"
我已经阅读了本网站上关于此问题的数十篇文章、博客文章、文档和问答帖子,但我还没有找到解决方案。
我在index.py
中的Python代码很简单:
def handler(event, context):
print("hello world. this is hello handler")
if __name__ == "__main__":
print("hello world. this is the main section in hello index.py")
请注意,我使用的是默认文件名 index.py
和默认入口点 handler
。
我有一个简单的pyproject.toml:
[tool.poetry]
name = "hello"
version = "0.1.0"
description = ""
authors = []
[tool.poetry.dependencies]
python = "~3.9"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.1.0"]
build-backend = "poetry.core.masonry.api"
作为基本的健全性检查,我可以通过以下方式 运行 本地的主要部分:
poetry run python index.py
我通过 typescript CDK 部署:
const stack = new Stack(app, "PythonHelloStack", {env})
new PythonFunction(stack, `HelloFunction`, {
runtime: Runtime.PYTHON_3_9,
entry: path.join(__dirname, `../../../lambdas/hello`),
})
这成功创建了 Lambda。当我 运行 针对此的测试事件时,我得到错误:
"errorMessage": "Unable to import module 'index': No module named 'index'",
"errorType": "Runtime.ImportModuleError",
显示控制台的屏幕截图,其中显示了代码:
如果我点击 index.py
,代码显示正常。为什么 AWS Lambda 无法导入 index.py
?我一直在思考如何继续解决此问题。
This is a bug in CDK 在下一个版本中仍有待修补。如果使用 CDK v1,则降级到 1.136
,如果使用 CDK v2,则降级到 @aws-cdk/aws-lambda-python-alpha
的 2.3.0-alpha.0
版本。
更新: 1.139 CDK release 解决了这个问题。
我已经阅读了本网站上关于此问题的数十篇文章、博客文章、文档和问答帖子,但我还没有找到解决方案。
我在index.py
中的Python代码很简单:
def handler(event, context):
print("hello world. this is hello handler")
if __name__ == "__main__":
print("hello world. this is the main section in hello index.py")
请注意,我使用的是默认文件名 index.py
和默认入口点 handler
。
我有一个简单的pyproject.toml:
[tool.poetry]
name = "hello"
version = "0.1.0"
description = ""
authors = []
[tool.poetry.dependencies]
python = "~3.9"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.1.0"]
build-backend = "poetry.core.masonry.api"
作为基本的健全性检查,我可以通过以下方式 运行 本地的主要部分:
poetry run python index.py
我通过 typescript CDK 部署:
const stack = new Stack(app, "PythonHelloStack", {env})
new PythonFunction(stack, `HelloFunction`, {
runtime: Runtime.PYTHON_3_9,
entry: path.join(__dirname, `../../../lambdas/hello`),
})
这成功创建了 Lambda。当我 运行 针对此的测试事件时,我得到错误:
"errorMessage": "Unable to import module 'index': No module named 'index'",
"errorType": "Runtime.ImportModuleError",
显示控制台的屏幕截图,其中显示了代码:
如果我点击 index.py
,代码显示正常。为什么 AWS Lambda 无法导入 index.py
?我一直在思考如何继续解决此问题。
This is a bug in CDK 在下一个版本中仍有待修补。如果使用 CDK v1,则降级到 1.136
,如果使用 CDK v2,则降级到 @aws-cdk/aws-lambda-python-alpha
的 2.3.0-alpha.0
版本。
更新: 1.139 CDK release 解决了这个问题。