Python使用boto3错误从代码中调用我的AWS lambda

问题描述 投票:2回答:1

在我的项目中,我必须创建一个调用lambda函数传递body参数的py,我写这段代码:

import boto3
import json
import base64

client = boto3.client(‘lambda’)
d = {'calID': '[email protected]', 'datada': '2017-12-22T16:40:00+01:00', 'dataa': '2017-12-22T17:55:00+01:00', 'email': '[email protected]'}
s = json.dump(d)
s64 = base64.b64encode(s.encode('utf-8'))

response = client.invoke(
    FunctionName='arn:aws:lambda:eu-west-1:13737373737:function:test',
    InvocationType='RequestResponse',
    LogType='None',
    ClientContext='None',
    Payload=s64
)

但是当响应运行时会生成此错误:

InvalidRequestContentException:发生错误(InvalidRequestContentException)调用调用运行时:无法解析请求主体为JSON:无法识别的记号“eyJjYWxJRCI6ICI5MmRxaXNzNWJnODdldGNxZWVhbWxtb2IyZ0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29tIiwgImRhdGFkYSI6ICIyMDE3LTEyLTIyVDE2OjQwOjAwKzAxOjAwIiwgImRhdGFhIjogIjIwMTctMTItMjJUMTc6NTU6MDArMDE6MDAiLCAiZW1haWwiOiAibHVjYV9ncmV6eml4eEBob3RtYWlsLmNvbSJ9”:期待(“真”,“假”或“空”)在[来源:[B @ 4587098d; line:1,专栏:481]

这是什么意思?

提前谢谢了

python json amazon-web-services aws-lambda boto3
1个回答
4
投票

该错误是由于以下参数:

ClientContext='None',

来自the docs

ClientContext (string) --

使用ClientContext,您可以将客户端特定的信息传递给您正在调用的Lambda函数。然后,您可以通过上下文变量选择处理Lambda函数中的客户端信息。有关ClientContext JSON的示例,请参阅Amazon Mobile Analytics API参考和用户指南中的PutEvents

ClientContext JSON必须是base64编码的,最大大小为3583字节。

你根本不需要ClientContext参数。只需调用如下:

response = client.invoke(
    FunctionName='arn:aws:lambda:eu-west-1:13737373737:function:test',
    LogType='None',
    Payload=json.dumps(d)
)
© www.soinside.com 2019 - 2024. All rights reserved.