SNS getEndpointAttributes 在 EventEndpointUpdated 事件后返回旧数据

dvi*_*sco 2 amazon-sns aws-sdk-js

将主题附加到 SNS 应用程序的“端点已更新”可配置主题时,我遇到了一些意外行为。根据 AWS 关于SNS 应用程序事件的文档,当平台端点已更新为禁用或令牌已更改时,我应该会收到有关我配置的主题的事件。

就我而言,我有一个订阅此主题的 lambda 函数,然后通过调用 AWS 的 javascript sdk 检索平台端点的属性,SNS.getEndpointAttributes以便我可以检查哪些属性已更改,以删除端点或更新持久存储中的关联令牌。然而,此调用返回端点,从而Enabled = true阻止我采取纠正措施。但是,如果我查看 AWS SNS 控制台,我可以看到端点已被禁用为Enabled = false

其他人是否也遇到过类似的不一致问题?如果有,解决这些问题的最佳做法是什么?感谢您的任何意见!

小智 6

当亚马逊通过 http 通知我 sns 应用程序事件时,我也面临类似的问题。为了解决这个问题,我实际上延迟了将这些端点更新与我的数据库同步的代码的执行。为了实现这一目标,我为后台队列工作程序安排了一项作业,并在亚马逊通过 http 通知的时间后 30 秒后延迟了其执行。我不知道这是否是最佳实践,但它在我的场景中有效。