web-dev-qa-db-fra.com

Appelez la fonction lambda AWS à partir d'une fonction lambda existante sur Python 2.7

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}
18
shiv455

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()
12
Gricey