Lambda 松弛文件上传被多次触发
Lambda slack file upload is getting triggered multiple times
我的应用架构是松弛事件 -> API 网关 -> Lambda -> 做一些操作和 returns 一个使用 numpy 和 matplotlib 生成的 .png 文件。
当我在 lambda 中只处理文本输出时,它工作正常,但是当我处理文件上传时,它工作起来很奇怪,
它使用 [files.upload] 方法将文件上传到 slack,然后一分钟后我的 lambda 再次被触发并最终上传另一个文件。
是否因为 file.upload 方法的 HTTP 响应松弛 return 并且我的应用程序以某种方式捕获了它并且它运行迅速?
这会很有帮助,因为即使在松弛事件中,事件都是相同的,没有任何区别,但我真的不确定为什么我的 lambda 会再次被调用,我验证了请求 ID,它是不同的,甚至在 API getway 有两个不同的请求 ID 但我只请求了一次...这让我发疯...
我找到方法了。在本文 https://aws.amazon.com/premiumsupport/knowledge-center/custom-headers-api-gateway-lambda/ 的帮助下,我在 API 网关中添加了 HTTP Header [客户端 Header 信息],并将其传递给 lambda。因此,在 Lambda 中,我在 header 的帮助下从 slack 捕获重试事件,其中包含 X-Slack-Retry-Num 用于重试事件,return 立即作为 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"
我的应用架构是松弛事件 -> API 网关 -> Lambda -> 做一些操作和 returns 一个使用 numpy 和 matplotlib 生成的 .png 文件。
当我在 lambda 中只处理文本输出时,它工作正常,但是当我处理文件上传时,它工作起来很奇怪,
它使用 [files.upload] 方法将文件上传到 slack,然后一分钟后我的 lambda 再次被触发并最终上传另一个文件。
是否因为 file.upload 方法的 HTTP 响应松弛 return 并且我的应用程序以某种方式捕获了它并且它运行迅速?
这会很有帮助,因为即使在松弛事件中,事件都是相同的,没有任何区别,但我真的不确定为什么我的 lambda 会再次被调用,我验证了请求 ID,它是不同的,甚至在 API getway 有两个不同的请求 ID 但我只请求了一次...这让我发疯...
我找到方法了。在本文 https://aws.amazon.com/premiumsupport/knowledge-center/custom-headers-api-gateway-lambda/ 的帮助下,我在 API 网关中添加了 HTTP Header [客户端 Header 信息],并将其传递给 lambda。因此,在 Lambda 中,我在 header 的帮助下从 slack 捕获重试事件,其中包含 X-Slack-Retry-Num 用于重试事件,return 立即作为 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"