1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 发现了错误。我们在一个分离的函数中使用了event["request"]
的值作为内部逻辑的一部分,而这会修改这些值(由于字典是可变的,所以我们忘记了它们是通过引用传递的)。解决方法是在传递给函数之前进行深拷贝(使用copy.deepcopy(event["request"])
)。
主要代码如下:
from copy import deepcopy
def function_handler(event, context): # 创建事件请求的深拷贝 request = deepcopy(event['request']) # 在自定义函数中做一些事情,对于我们来说它返回一个布尔值 response = do_something(request) if not response: # 由于我们的函数没有按预期工作,我们无法创建用户,引发异常 raise Exception('do_something失败,这里是一个有意义的错误消息...')
# 由于do_something起作用了,让我们确认用户
event['response']['autoConfirmUser'] = True
event['response']['autoVerifyEmail'] = True
return event
这个解决方法起作用了。回想一下,错误信息“无Unrecognizable lambda output”并不是真正有用的,如果它对被修改的`request`有更多信息,那么找到问题的时间将会更少。