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)
第一行是调用 '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)