当我尝试将自定义 Python 导入到 AWS Lambda 层时出现错误

问题描述 投票:0回答:1

我想在 AWS Lambda 中使用自定义函数,并且我知道这可以通过层来完成。我无法访问 EC2,但有 Linux(不是 AWS,也没有 AWS CLI)。

所以我创建了一个“python/test_function.py”,其中包含一个简单的函数

def add_nums(x,y):
    return x + y

然后我把它拉上拉链

zip -r test_function.zip python/test_function.py

并上传到 AWS Layers。我能够在 Lambda 中选择它。

在Lambda代码中,运行没有错误:

import test_function

但是我在这里遇到错误:

print(add_nums(4,5))

{
  "errorMessage": "name 'add_nums' is not defined",
  "errorType": "NameError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 56, in lambda_handler\n    print(add_nums(4,5))\n"
  ]
}

我该如何修复它?

python-3.x amazon-web-services aws-lambda
1个回答
0
投票

这里要认识到的关键一点是,您需要告诉 Python 在哪里找到

add_nums
函数的定义(否则它必须到处查找)。

执行此操作的一种方法是:

from test_function import add_nums

add_nums(4, 5)

执行此操作的另一种方法是在调用时显式限定函数名称:

import test_function

test_function.add_nums(4, 5)
© www.soinside.com 2019 - 2024. All rights reserved.