Python错误格式化AWS Lambda请求

时间:2018-09-18 15:55:34

标签: python json aws-lambda payload

我必须使用boto3调用AWS lambda。 我这样做:

client = boto3.client("lambda")

dtime1 = str(datetime.datetime.now())
#After some computations
dtime2 = str(datetime.datetime.now())

elapsed =  time.time() - start_time

payload = {"key_id":"1",
        "data_start":dtime1,
        "data_stop":dtime2,
        "elapsed_t": int(elapsed)}

r = client.invoke(
            FunctionName='mylambda',
            InvocationType='RequestResponse',
            Payload=bytes(str(payload), 'utf-8')
        )

print(r.read())

但是当我运行它时会发生错误:

  

“调用Invoke操作时发生错误(InvalidRequestContentException):无法将请求正文解析为json:意外字符('”(代码39)):希望双引号在[Source处以字段名\ n开头:[B @ 4cb02e4e;第1行,第3列]“

如何解决我的问题?

预先感谢

2 个答案:

答案 0 :(得分:2)

如果要将JSON对象作为字符串传递,则可以按照https://docs.python.org/3/library/json.html中的说明使用json.dumps(payload)。

答案 1 :(得分:1)

在Lambda调用中传递有效负载时,我看到的所有官方文档都丢失或不正确。这对我有用:

# Construct a dict object
payload = {"key": "value"}

# Invoke the Lambda function, passing the payload
lambda_client.invoke(FunctionName='myFunctionName',
                     InvocationType='RequestResponse',
                     Payload=json.dumps(payload))