AWS Lambda 调用另一个 lambda 然后解析 <botocore.response.StreamingBody 问题

AWS Lambda calling another lambda and then parsing <botocore.response.StreamingBody problem

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

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

以下代码返回 null

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

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

非常感谢任何帮助。

谢谢,

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

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

一个完整的例子:

response = lambda_client.invoke(FunctionName="WriteToS3",
                                       InvocationType="RequestResponse",
                                       Payload=json.dumps(data))

json_response = json.load(response["Payload"])
print("json.load: ", json_response)