2016-07-17 140 views
8

Sto cercando di chiamare un'altra funzione lambda da un fucntion lambda esistente come di seguito (python 2,7)Chiamare funzione lambda AWS da una funzione lambda esistente su Python 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) 

sto ne varrà davvero la risposta invece di seguito di un risultato reale. Quando eseguo teststack lambda invidually funziona bene, ma ottenendo sotto la risposta invece di "test" restituito dalla funzione Lambda teststack.

{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

ho ottenuto la soluzione da questa discussione http://stackoverflow.com/questions/36784925/how-to-get- return-response-from-aws-lambda-function? rq = 1 THanks !! – shiv455

+1

Possibile duplicato di [come ottenere risposta di ritorno dalla funzione AWS Lambda] (http://stackoverflow.com/questions/36784925/how-to-get-return-response-from-aws-lambda-function) – Gricey

+0

@Gricey, l'altra domanda riguarda la chiamata asincrona (HTTP 202, "Evento"). Qui è una chiamata sincrona (HTTP 200, "RequestResponse"). Quindi ... Non un duplicato. Almeno non questo. –

risposta

3

i dati di risposta che stai cercando è lì, è appena dentro il Payload come oggetto StreamingBody.

Secondo la documentazione Boto, si può leggere l'oggetto utilizzando il metodo read:

invoke_response['Payload'].read()