Lambda Return Payload botocore.response.StreamingBody 对象打印但随后在变量中为空
Lambda Return Payload botocore.response.StreamingBody object prints but then empty in variable
我正在从另一个函数调用一个 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)
下面的代码解决了这个问题。显然我需要将流体设置为一个变量,然后将其读入另一个变量。我用这个 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 函数,并希望根据响应采取不同的操作,非常标准的东西。但是我得到了一些意想不到的行为,这可能是显而易见的,但它却在躲避我。我已经在最简单的示例中重新创建了我的示例,我们将不胜感激。
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)
下面的代码解决了这个问题。显然我需要将流体设置为一个变量,然后将其读入另一个变量。我用这个 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))