2016-07-17 14 views
8

Próbuję wywołać inną funkcję lambda z istniejącego fucntion lambda jak poniżej (Python 2.7)wywołanie funkcji lambda AWS z istniejącej funkcji lambda na Pythonie 2.7

from __future__ import print_function 
import boto3 
import json 

lambda_client = boto3.client('lambda') 

def lambda_handler(event, context): 

    invoke_response = lambda_client.invoke(FunctionName="teststack", 
              InvocationType='RequestResponse' 
              ) 
    print(invoke_response) 

    return str(invoke_response) 

mam gettting poniżej odpowiedzi zamiast rzeczywistego wyniku. Kiedy uruchamiam teststack lambda, to działa to dobrze, ale otrzymanie odpowiedzi poniżej zamiast "test" zwróciło się przez funkcję Lambda.

{u'Payload': <botocore.response.StreamingBody object at ****>, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': '******', 'HTTPHeaders': {'x-amzn-requestid': '******', 'content-length': '155', 'x-amzn-remapped-content-length': '0', 'connection': 'keep-alive', 'date': 'Sun, 17 Jul 2016 21:02:01 GMT', 'content-type': 'application/json'}}, u'StatusCode': 200} 
+1

mam rozwiązanie z tego wątku http://stackoverflow.com/questions/36784925/how-to-get- return-response-from-aws-lambda-function? rq = 1 Podziękowania !! – shiv455

+1

Możliwy duplikat [jak uzyskać odpowiedź zwrotną z funkcji AWS Lambda] (http://stackoverflow.com/questions/36784925/how-to-get-return-response-from-aws-lambda-function) – Gricey

+0

@Gricey, drugie pytanie dotyczy wywołania asynchronicznego (HTTP 202, "Event"). Tutaj jest połączenie synchroniczne (HTTP 200, "RequestResponse"). Więc ... Nie duplikat. Przynajmniej nie ten. –

Odpowiedz

3

Dane odpowiedź szukasz jest tam, to tylko wewnątrz Payload jako StreamingBody obiektu.

Zgodnie z docs boto, można zapoznać się z obiektu przy użyciu metody read:

invoke_response['Payload'].read()