关于aws lambda的字典问题:aws lambda的字典问题 – Python

Dictionary problem with aws lambda - Python

我正在用python 3.6开发一个AWS lambda函数,并面临一个奇怪的场景。

在本地,使用python-lambda-local调用函数,一切正常。

在AWS中,下面的代码片段引发异常:

1
2
3
4
def handler(event, context):
    data = event['body']
    logger.info("###DATAAAAA BODY" + str(data))
    origem = data.get('origem','')

错误:

AttributeError: 'str' object has no attribute 'get'

在本地,对象数据似乎是一个dict,但在aws中,它是一个str。


感谢@g.d.d.c的评论,我可以找到答案。

问题是API Gateway用引号括住事件的主体值。

所以我必须先把它解析成dict。

正确的代码:

1
2
3
4
def handler(event, context):
    logger.info("###EVENT" + str(event))
    data = event.get('body')
    data = json.loads(data)