SNS getEndpointAttributes Returns EventEndpointUpdated 事件后的旧数据

SNS getEndpointAttributes Returns Old Data After EventEndpointUpdated Event

将主题附加到 SNS 应用程序的 "Endpoint updated" 可配置主题时,我遇到了一些意外行为。根据 AWS 关于 SNS Application Events 的文档,当平台端点已更新为禁用或它的令牌已更改时,我应该在我配置的主题上收到一个事件。

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

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

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