如何从 AWS Lambda 函数获得 return 响应
how to get return response from AWS Lambda function
我有一个简单的 lambda 函数,它 returns 一个字典响应,另一个 lambda 函数调用该函数并打印响应。
lambda 函数 A
def handler(event,context):
params = event['list']
return {"params" : params + ["abc"]}
lambda 函数 B 调用 A
a=[1,2,3]
x = {"list" : a}
invoke_response = lambda_client.invoke(FunctionName="monitor-workspaces-status",
InvocationType='Event',
Payload=json.dumps(x))
print (invoke_response)
invoke_response
{u'Payload': <botocore.response.StreamingBody object at 0x7f47c58a1e90>, 'ResponseMetadata': {'HTTPStatusCode': 202, 'RequestId': '9a6a6820-0841-11e6-ba22-ad11a929daea'}, u'StatusCode': 202}
为什么响应状态是202?另外,如何从 invoke_response 获取响应数据?我找不到关于如何操作的明确文档。
一个202
响应意味着Accepted
。这是一个成功的响应,但告诉您您请求的操作已经启动但尚未完成。您获得 202
的原因是您异步调用了 Lambda 函数。您的 InvocationType
参数设置为 Event
。如果要进行同步调用,请将其更改为 RequestResponse
。
完成后,您可以获得这样的返回数据:
data = invoke_response['Payload'].read()
尝试:data = invoke_response['Payload'].read()
read() 因为它是一个 StreamingBody 对象
<botocore.response.StreamingBody object at 0x110b91c50>
它在 boto3 文档中。您可以在此处找到更多详细信息:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/resources.html#actions
我有一个简单的 lambda 函数,它 returns 一个字典响应,另一个 lambda 函数调用该函数并打印响应。
lambda 函数 A
def handler(event,context):
params = event['list']
return {"params" : params + ["abc"]}
lambda 函数 B 调用 A
a=[1,2,3]
x = {"list" : a}
invoke_response = lambda_client.invoke(FunctionName="monitor-workspaces-status",
InvocationType='Event',
Payload=json.dumps(x))
print (invoke_response)
invoke_response
{u'Payload': <botocore.response.StreamingBody object at 0x7f47c58a1e90>, 'ResponseMetadata': {'HTTPStatusCode': 202, 'RequestId': '9a6a6820-0841-11e6-ba22-ad11a929daea'}, u'StatusCode': 202}
为什么响应状态是202?另外,如何从 invoke_response 获取响应数据?我找不到关于如何操作的明确文档。
一个202
响应意味着Accepted
。这是一个成功的响应,但告诉您您请求的操作已经启动但尚未完成。您获得 202
的原因是您异步调用了 Lambda 函数。您的 InvocationType
参数设置为 Event
。如果要进行同步调用,请将其更改为 RequestResponse
。
完成后,您可以获得这样的返回数据:
data = invoke_response['Payload'].read()
尝试:data = invoke_response['Payload'].read()
read() 因为它是一个 StreamingBody 对象
<botocore.response.StreamingBody object at 0x110b91c50>
它在 boto3 文档中。您可以在此处找到更多详细信息:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/resources.html#actions