我想在 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 在哪里找到
add_nums
函数的定义(否则它必须到处查找)。
执行此操作的一种方法是:
from test_function import add_nums
add_nums(4, 5)
执行此操作的另一种方法是在调用时显式限定函数名称:
import test_function
test_function.add_nums(4, 5)