AWS SNS 订阅不断删除订阅本身

问题描述 投票:0回答:4

我使用电子邮件地址的端点订阅了 SNS 主题。

昨晚我收到了取消订阅该主题的通知,我询问了所有可以访问收件箱的人,没有人点击取消订阅链接。

我重新创建了订阅,今天早上它再次取消订阅。

怎么可能呢?我怎样才能防止这种情况再次发生?我在 CloudTrail 中查找,但取消订阅操作不会被记录,除非它们是在控制台中或通过 API 进行的。

任何指标都会有帮助,谢谢。

amazon-web-services amazon-sns
4个回答
3
投票

订阅将处于“已删除状态”,因为订阅者可能会因单击电子邮件通知中的取消订阅 URL 而取消订阅电子邮件订阅。

建议我们订阅邮件端点,手动复制订阅URL并粘贴到SNS控制台中。这样,订阅只能由 SNS 主题所有者删除/移除,而不能通过单击电子邮件中的取消订阅 URL 来删除/移除。

一旦我们手动将链接复制到 SNS 控制台并确认订阅,我们就可以控制该订阅,并在 CloudTrail 中生成用于审核目的的跟踪。


1
投票

发生这种情况的原因有多种:

  • AWS 已记录,如果每秒超过 10 封电子邮件,它将自动取消订阅以避免垃圾邮件(解决方案是向您的主题添加过滤器选项,这样您就不会向任何人发送垃圾邮件)
  • 收到该电子邮件的任何人都已取消订阅(您已经排除了此邮件)
  • AWS SNS 电子邮件订阅似乎存在错误(简单的解决方法是使用电子邮件-JSON 而不是普通电子邮件,更复杂的解决方法是使用 Lambda 函数发送电子邮件 - 请注意,这可能根本不是错误因为也许自动垃圾邮件过滤器正在执行此操作,这就是电子邮件-JSON 选项避免这种情况的原因)

0
投票

它可能确实是 gmail 自动垃圾邮件过滤器,但由于没有可用的日志,因此很难验证。

AWS文档我看到您可以启用删除身份验证。这应该可以防止它被 Gmail 删除。

删除订阅。如果订阅需要身份验证 对于删除,仅限订阅所有者或主题所有者 可以取消订阅,并且需要 AWS 签名。如果取消订阅 调用不需要身份验证,并且请求者不是 订阅所有者,最终取消消息将发送至 端点,以便端点所有者可以轻松地重新订阅 如果取消订阅请求是无意的。

要更改此权限,请转到您的 SNS 主题概述并选择您想要的主题。单击编辑主题策略。如果您单击“高级”视图,请确保添加类似的内容:

  "Action": [
    "SNS:Unsubscribe"
  ],
  "Resource": "arn:aws:sns:<AWS_REGION>:<AWS_ACCOUNT_ID>:<SNS_TOPIC>",
  "Condition": {
    "StringEquals": {
      "AWS:SourceOwner": "<AWS_ACCOUNT_ID>"
    }
  }

这将确保只有帐户所有者才能取消订阅,而不是所有人。根据您的需要更改 <> 之间的变量。


0
投票

将您的 sns 格式更改为 email-json 而不是电子邮件?

© www.soinside.com 2019 - 2024. All rights reserved.