Lambda松弛文件上传被多次触发

时间:2020-04-04 07:46:12

标签: file upload slack

我的应用程序体系结构是松弛事件-> API网关-> Lambda->进行一些操作,并返回一个使用numpy和matplotlib生成的.png文件。

当我只处理lambda中的文本输出时,它可以正常工作,但是当我处理文件上载时,它却很奇怪,

它使用[files.upload]方法将文件上传到松弛状态,然后在一分钟后再次触发我的lambda并最终上传另一个文件。

是不是因为slack为file.upload方法返回了HTTP响应,而我的应用程序却以某种方式捕获了该消息,并运行了agian?

这将是非常有帮助的,因为即使在slack事件中,事件都是一样的,没有任何区别,但是我真的不确定为什么我的lambda再次被调用,并且我验证了请求ID,并且它是不同的,甚至在API getway那里是两个不同的请求ID,但我只请求了一次...这使我发疯...

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。借助本文https://aws.amazon.com/premiumsupport/knowledge-center/custom-headers-api-gateway-lambda/,我在API网关中添加了HTTP标头[客户端标头信息],并将其传递给lambda。因此,在Lambda中,我借助包含重试事件的X-Slack-Retry-Num的标头从松弛状态捕获重试事件,并立即将其返回为return 200。

if 'X-Slack-Retry-Num' in output['headers']:
    slk_retry = output['headers']['X-Slack-Retry-Num']
    return 200
else:
    "Consider this as first event and provide your actual code and logic"