Ich habe eine einfache Lambda-Funktion, die eine Diktat-Antwort zurückgibt und eine andere Lambda-Funktion ruft diese Funktion auf und druckt die Antwort.Wie bekomme ich Antwort Antwort von AWS Lambda-Funktion
Lambda-Funktion A
def handler(event,context):
params = event['list']
return {"params" : params + ["abc"]}
Lambda-Funktion B 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 Aufruf
{u'Payload': <botocore.response.StreamingBody object at 0x7f47c58a1e90>, 'ResponseMetadata': {'HTTPStatusCode': 202, 'RequestId': '9a6a6820-0841-11e6-ba22-ad11a929daea'}, u'StatusCode': 202}
Warum der Antwortstatus 202? Wie erhalten Sie die Antwortdaten von invoke_response? Ich konnte keine klare Dokumentation dafür finden.
mein Tag! Danke vielmals. Habe das nirgends in docs gefunden –
'.read()' gibt 'type' bytes' zurück. Wenn Sie also eine Zeichenkette, JSON, usw. erwartet haben, müssen Sie' .decode() 'sie. z.B. 'response ['Payload']. read(). decode()' –
Und da 'json.dumps (obj)' gibt einen String in Anführungszeichen zurück, (** wenn Sie diesen ** für den 'return' Wert Ihres' lambda_handler') Sie werden eine Zeichenfolge erhalten, wenn Sie 'json.loads (response [' Payload ']. read(). decode())' und würde eine andere 'json.loads()' darum wickeln müssen. Also, konvertiere nicht explizit zu JSON in deiner Lambda-Funktion. –