我制作了2个Lambda函数(LambdaFunction_1和LambdaFunction_2)。我已经在我的AWS-Greengrass核心上部署了LambdaFunction_1,它是RaspberryPi 3的本地lambda函数。我想从LambdaFunction_2调用LambdaFunction_1。由于我无法理解的奇怪原因,无法调用本地lambda函数。
要部署本地lambda函数(LambdaFunction_1),我必须上传一个包含代码的python文件和greengrasssdk的zip文件。在代码中导入此greengrasssdk使其无法被调用!
这是在云上的LAmbdaFunction_2的代码:
import json
import boto3
invokeLam = boto3.client('lambda')
def lambda_handler(event, context):
payload = {'test-key': 'Hi, you have been invoked!'}
response_F1 = invokeLam.invoke(
FunctionName = 'LambdaFunction_1',
InvocationType = 'RequestResponse',
LogType='None',
Payload = json.dumps(payload)
)
data_F1 = response_F1['Payload'].read()
print (data_F1)
return
这是部署在greengrass核心上的LambdaFunction_1的代码:
import json
import greengrasssdk
def function_handler(event, context):
print (event)
return 'Hello From Function 1'
函数2的日志文件中的输出应为“Hello From Function 1”。但响应为{“errorMessage”:“无法导入模块'LambdaFunction_1'”}
但是:当我从函数1的代码中删除(import greengrasssdk)行时,它完美地工作。这个问题合乎逻辑吗?
我找到了我必须在greengrasssdk旁边的LambdaFunction_1中导入两个库的解决方案:1- greengrass_ipc_python_sdk 2- greengrass_common
我通过查看@Stargazer建议的LambdaFunction_1的日志文件得到了答案