как передать выход AWS лямбда 1 как вход лямбда 2 с помощью BOTO 3 - PullRequest
0 голосов
/ 29 мая 2020
• 1000 * Я вызываю 6 других лямбда-выражений, потому что время выполнения запроса журналов занимает более 48 минут. Я разделил продолжительность на 6 частей и вызвал каждую лямбду с некоторым временем начала и окончания. Поскольку время выполнения лямбды составляет не более 15 минут

код лямбда 1

import json
import boto3
import time

client = boto3.client('lambda')

payload3=b"""{ "query":"fields @timestamp, @message | sort @timestamp desc", "log_group":"abc.log", "sTime":1585630748456, "eTime":1585713248457}"""

def lambda_handler(event,context):
    response = client.invoke(
        FunctionName='testamurin',
        InvocationType='Event',
        Payload=payload3
    )

   return {
        'statusCode': 200
    }

лямбда 2

import json
import boto3
import time

client = boto3.client('logs')

def lambda_handler(event,context):

    response = client.start_query(
        logGroupName = log_group,
        startTime=sTime,
        endTime=eTime,
        queryString = query
    )

    query_id = response['queryId']

    response = None

    while response == None or response['status'] == 'Running':
        print('Waiting for query to complete ...')
        time.sleep(1)
        response = client.get_query_results(
            queryId=query_id)

    return {
        'body': response
    }

Когда я запускаю lambda1, все получается. Но в лямбда 2 я получаю ошибку

[ERROR] NameError: name 'log_group' is not defined
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 16, in lambda_handler
    logGroupName = log_group,

1 Ответ

0 голосов
/ 29 мая 2020

Я предполагаю, что функция 1 вызывает функцию 2

Вход функции 1 содержит first_name и last_name

Функция 1

import json
from boto3 import client as boto3_client

lambda_client = boto3_client('lambda')

def my_handler(event, context):
    response = lambda_client.invoke(
        FunctionName="FUNCTION-2-NAME-FOUND-IN-LAMBDA-CONSOLE",
        InvocationType='RequestResponse',
        Payload=json.dumps(event)
    )
    # do something with the response
    # ...


Функция 2

def my_handler(event, context):
    message = 'Hello {} {}!'.format(event['first_name'], 
                                    event['last_name'])  
    return { 
        'message' : message
    }  
...