Lambda Return Payload botocore.response.StreamingBody对象打印但在变量中为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lambda Return Payload botocore.response.StreamingBody对象打印但在变量中为空相关的知识,希望对你有一定的参考价值。
我正在从另一个函数调用lambda函数,并希望根据响应采取不同的操作,非常标准的东西。然而,我得到了一些意想不到的行为,这可能是显而易见的事情,但它正在躲避我。我在最简单的例子中重新创建了我的例子,任何帮助都会非常感激。
lambda函数
def lambda_handler(event, context):
return 'Just a string'
调用lambda函数的代码
def invoke_lambda(payload):
r = lambda_client.invoke(
FunctionName='MyLambdaFunction',
InvocationType='RequestResponse',
Payload=bytes(payload)
)
p = r['Payload'].read()
print p #Prints an empty string
print(r['Payload'].read()) #Prints Just a string
invoke_lambda(payload)
答案
以下代码解决了该问题。显然我需要将streamingbody设置为变量,然后将其读入另一个变量。我用这个link作为参考
def invoke_lambda(payload):
r = lambda_client.invoke(
FunctionName='MyLambdaFunction',
InvocationType='RequestResponse',
Payload=bytes(payload)
)
t = r['Payload']
j = t.read()
print j
另一答案
如果您希望JSON作为响应,则可以执行以下操作:
import json
def invoke_lambda(payload):
response = lambda_client.invoke(
FunctionName='MyLambdaFunction',
InvocationType='RequestResponse',
Payload=bytes(payload)
)
response_payload = json.loads(invoke_response['Payload'].read().decode("utf-8"))
print ("response_payload: {}".format(response_payload))
以上是关于Lambda Return Payload botocore.response.StreamingBody对象打印但在变量中为空的主要内容,如果未能解决你的问题,请参考以下文章