我制作了 2 个 Lambda 函数(LambdaFunction_1 和 LambdaFunction_2)。我已经在我的 AWS-Greengrass 核心上部署了 LambdaFunction_1,它是 RaspberryPi 3,作为本地 lambda 函数。我想从 LambdaFunction_2 调用 LambdaFunction_1。由于我无法理解的奇怪原因,无法调用本地 lambda 函数。
要部署本地 lambda 函数 (LambdaFunction_1),我必须上传一个 zip 文件,其中包含代码的 python 文件和 greengrasssdk。在代码中导入这个 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'
Function 2 的日志文件中的输出应该是“Hello From Function 1”。但响应是 {"errorMessage": "Unable to import module 'LambdaFunction_1'"}
但是:当我从函数一的代码中删除 (import greengrasssdk) 行时,它工作得很好。这个问题合乎逻辑吗?