J'essaie d'appeler une autre fonction lambda à partir d'une fonction lambda existante comme ci-dessous (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)
J'obtiens la réponse ci-dessous au lieu d'un résultat réel. Lorsque j'exécute teststack lambda de manière individuelle, cela fonctionne très bien, mais obtenir une réponse inférieure au lieu de "test" renvoyé par la fonction 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}
Les données de réponse que vous recherchez sont là, elles sont juste à l'intérieur de l'objet Payload
sous la forme d'un objet StreamingBody .
Selon les documents Boto, vous pouvez lire l'objet en utilisant la méthode read
:
invoke_response['Payload'].read()