【问题标题】:AWS Lambda calling another lambda and then parsing <botocore.response.StreamingBody problemAWS Lambda 调用另一个 lambda 然后解析 <botocore.response.StreamingBody 问题
【发布时间】:2020-11-10 15:31:48
【问题描述】:

第一行是调用另一个 'RequestResponse' 类型的 lambda 后记录的响应的一部分。

'StatusCode': 200, 'ExecutedVersion': '$LATEST', 'Payload': <botocore.response.StreamingBody object at 0x7f62887d1410>}

以下代码返回null

json.loads(lambda_response['Payload'].read().decode('utf-8'))

返回响应的调用 lambda 运行正常。

非常感谢任何帮助。

谢谢,

【问题讨论】:

  • 这个运气好吗?
  • @NebiMAydin 看到我的回答。谢谢。

标签: python lambda aws-lambda botocore aws-lambda-layers


【解决方案1】:

如果您的 lambda 可以直接调用 AWS 上的传出 Internet 连接,则使用 boto3 调用另一个 lambda 可以,但如果您的 VPC 没有附加 IG,则 boto3 调用另一个 lambda 将不起作用。如果是这种情况,请将被调用的 lambda 设置为内部私有 api 网关端点,并在您的调用 lambda 上调用此端点。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,我修复了它,确保 InvocationType 是 RequestResponse(而不是 Event,我正在等待响应),然后使用 json.load 加载响应。

    一个完整的例子:

    response = lambda_client.invoke(FunctionName="WriteToS3",
                                           InvocationType="RequestResponse",
                                           Payload=json.dumps(data))
    
    json_response = json.load(response["Payload"])
    print("json.load: ", json_response)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 2018-06-09
      • 2019-05-22
      • 2017-01-01
      • 2018-08-21
      相关资源
      最近更新 更多