Вызов локальной функции AWS Lambda из облачной функции Lambda - PullRequest
0 голосов
/ 29 марта 2019

Я сделал 2 лямбда-функции (LambdaFunction_1 и LambdaFunction_2).Я развернул LambdaFunction_1 на своем ядре AWS-Greengrass, которое является RaspberryPi 3, чтобы быть локальной лямбда-функцией.Я хочу вызвать LambdaFunction_1 из LambdaFunction_2.Локальная лямбда-функция не может быть вызвана по странной причине, которую я не могу понять.

Чтобы развернуть локальную лямбда-функцию (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

Это код LambdaFunction_1, который развернут на greengrasscore:

import json
import greengrasssdk
def function_handler(event, context):
    print (event)
    return 'Hello From Function 1'

Вывод должен быть "Hello From Function 1" в файле журнала функции 2. Но ответом является {"errorMessage": "Невозможно импортировать модуль 'LambdaFunction_1'"}

НО: когда я удаляю (импортирую greengrasssdk) строку из кода функции один, она работает отлично.Эта проблема логична?

1 Ответ

0 голосов
/ 10 апреля 2019

Я нашел решение, что мне нужно импортировать две библиотеки в LambdaFunction_1 рядом с greengrasssdk, которые: 1- greengrass_ipc_python_sdk 2- greengrass_common

Я получил ответ, просмотрев файлы журнала LambdaFunction_1 в соответствии с рекомендациями @Stargazer

...