我正在使用Python 3.6开发一个AWS lambda函数,并且面临着一个奇怪的情况。
在本地,使用python-lambda-local
调用函数可以正常工作。
在AWS中,以下代码段引发异常:
def handler(event, context):
data = event['body']
logger.info("###DATAAAAA BODY " + str(data))
origem = data.get('origem','')
错误:
AttributeError:'str'对象没有属性'get'
在本地看来,对象 data 是 dict 。但是在AWS中,它是 str 。
答案 0 :(得分:2)
感谢 @ g.d.d.c 评论,我可以找到答案。
问题在于API Gateway
用引号包装事件的 body 值。
因此,我必须首先将其解析为 dict 。
正确的代码:
def handler(event, context):
logger.info("###EVENT " + str(event))
data = event.get('body')
data = json.loads(data)