【问题标题】:Call AWS lambda function from an existing lambda function on Python 2.7从 Python 2.7 上的现有 lambda 函数调用 AWS lambda 函数
【发布时间】:2017-10-08 18:25:22
【问题描述】:

我正在尝试从现有的 lambda 函数调用另一个 lambda 函数,如下所示 (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)

我得到的是以下响应,而不是实际结果。当我单独运行 teststack lambda 时,它工作正常,但低于响应而不是 teststack Lambda 函数返回的“测试”。

{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}

【问题讨论】:

  • 我从这个线程stackoverflow.com/questions/36784925/… THanks 得到了解决方案!
  • @Gricey,另一个问题涉及异步调用(HTTP 202,“事件”)。这是一个同步调用(HTTP 200,“RequestResponse”)。所以...不是重复的。至少不是这个。
  • @GrzegorzOledzki 我链接的副本的答案说他们应该使用RequestResponse。但是我已经添加了一个答案,以便这里有一些问题可以解决问题。

标签: python python-2.7 aws-lambda


【解决方案1】:

您正在寻找的响应数据就在那里,它就在Payload 中,作为StreamingBody 对象。

根据 Boto 文档,您可以使用 read 方法读取对象:

invoke_response['Payload'].read()

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2020-07-05
    • 2021-07-25
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    相关资源
    最近更新 更多