Ho una semplice funzione lambda che restituisce una risposta dict e un'altra funzione lambda richiama quella funzione e stampa la risposta.come ottenere risposta di ritorno dalla funzione AWS Lambda
funzione lambda Un
def handler(event,context):
params = event['list']
return {"params" : params + ["abc"]}
lambda funzione B invocando A
a=[1,2,3]
x = {"list" : a}
invoke_response = lambda_client.invoke(FunctionName="monitor-workspaces-status",
InvocationType='Event',
Payload=json.dumps(x))
print (invoke_response)
invoke_response
{u'Payload': <botocore.response.StreamingBody object at 0x7f47c58a1e90>, 'ResponseMetadata': {'HTTPStatusCode': 202, 'RequestId': '9a6a6820-0841-11e6-ba22-ad11a929daea'}, u'StatusCode': 202}
Perché lo stato della risposta 202? Inoltre, come ottenere i dati di risposta da invoke_response? Non sono riuscito a trovare una documentazione chiara su come farlo.
fatto il mio giorno! Molte grazie. Non lo abbiamo trovato da nessuna parte nei documenti –
'.read()' restituisce type 'bytes 'quindi se ti aspettavi una stringa, JSON, ecc., Devi' .decode() 'loro. per esempio. 'response ['Payload']. read(). decode()' –
E dal momento che 'json.dumps (obj)' restituisce una stringa quotata, (** se lo hai usato ** per il valore 'return' del tuo' lambda_handler') si otterrà una stringa se si esegue 'json.loads (response ['Payload']. read(). decode()) 'e dovrebbe avvolgere un altro' json.loads() 'attorno a questo. Quindi, non convertire esplicitamente in JSON nella funzione lambda. –