为什么无法删除我的 Amazon SNS 主题订阅?

上次更新时间:2021 年 9 月 3 日

我正尝试删除我的 Amazon Simple Notification Service(Amazon SNS)主题订阅。但我收到了错误消息,或者控制台的删除订阅选项被停用。为什么无法删除我的 Amazon SNS 主题订阅?取消订阅需要执行哪些操作?

简短描述

如果遇到以下三种情况,Amazon SNS 将不允许删除 Amazon SNS 主题订阅

  • 您的主题订阅处于 Pending Confirmation(待确认)状态。
  • 您的主题订阅处于 Deleted(已删除)状态。
  • 尝试删除主题订阅的 AWS Identity and Access Management(IAM)实体不具有取消订阅所需的权限。

注意:Amazon SNS 会在三天后自动从您的账户中删除处于 Deleted(已删除)和 Pending Confirmation(待确认)状态的订阅。

如果您的主题订阅处于 Pending Confirmation(待确认)状态,则 Amazon SNS 控制台中的 Delete(删除)按钮将会停用。

如果您的主题订阅处于 Deleted(已删除)状态,则在您尝试删除订阅时,Amazon SNS 将返回以下错误消息:

“Error code: InvalidParameter - Error message: Invalid parameter: SubscriptionArn Reason: An ARN must have at least 6 elements, not 1”(错误代码:InvalidParameter – 错误消息:参数无效:SubscriptionArn 原因:ARN 必须至少有 6 个元素,而不是 1 个)

如果尝试删除订阅的 IAM 实体没有取消订阅所需的权限,Amazon SNS 将返回 Permissions Denied(权限被拒绝)错误。

解决方法

检查您的 Amazon SNS 主题订阅是否处于 Deleted(已删除)或 Pending Confirmation(待确认)状态

重要提示:如果 Amazon SNS 主题有订阅处于 Deleted(已删除)或 Pending Confirmation(待确认)状态,则在您删除该主题时,将无法从您的账户中手动移除订阅。您必须等待三天,以便让 Amazon SNS 从您的账户中自动移除订阅。 

1.    打开 Amazon SNS 控制台

2.    在左侧导航窗格中,选择 Subscriptions(订阅)。

3.    在 Subscriptions(订阅)页面上,找到要删除的订阅。然后,在Status(状态)列中,检查订阅是否处于 Deleted(已删除)或 Pending Confirmation(待确认)状态。

4.    根据您的订阅是处于 Deleted(已删除)还是 Pending Confirmation(待确认)状态,执行以下步骤。如果您的订阅未处于 Deleted(已删除)或 Pending Confirmation(待确认)状态,则按照 排查“权限被拒绝”错误部分的说明操作。

如果您的 Amazon SNS 主题订阅处于 Deleted(已删除)状态

主题订阅并未从账户中移除但处于 Deleted(已删除)状态的原因有两种:

如果主题邮寄列表的某个成员点击了从该主题发送的电子邮件中的取消订阅链接

执行以下任意一项操作:

1.    在您的电子邮件收件箱中,打开具有以下主题行的电子邮件:AWS Notification - Unsubscribe Confirmation(AWS 通知 – 取消订阅确认)。

2.    点击电子邮件底部的 Resubscribe(重新订阅)链接。点击 Resubscribe(重新订阅)链接后,系统会重新确认电子邮件订阅,然后您可以从 Amazon SNS 控制台将其删除

–或者–

重新创建已删除的电子邮件订阅并确认。创建并确认订阅后,您可以从 Amazon SNS 控制台将其删除

注意:电子邮件垃圾邮件过滤器也可能取消订阅邮寄列表的电子邮件地址。

如果订阅了该主题的其他账户中的 Amazon SQS 队列删除了跨账户订阅

1.    遵循如何在另一个 AWS 账户中为 Amazon SQS 队列重新创建“已删除”的 Amazon SNS 主题订阅?中的说明。

2.    使用拥有该订阅的 AWS 账户删除订阅

如果您的 Amazon SNS 主题订阅处于 Pending Confirmation(待确认)状态

主题订阅并未从账户中移除但处于 Pending Confirmation(待确认)状态的原因有四种:

  • 已添加订阅但尚未确认。
  • 添加到订阅的电子邮件地址无效。
  • 电子邮件的发送速率超过每秒 10 份邮件的默认配额
  • HTTP 或 HTTPS 终端节点不会自动处理 Amazon SNS 发出的 Subscription Confirmation(订阅确认)请求。
  • HTTP 或 HTTPS 终端节点无效。

如果将下任何类型的终端节点订阅到 SNS 主题,在确认订阅前,订阅将始终处于 Pending Confirmation(待确认)状态:

  • 电子邮件
  • HTTP
  • HTTPS
  • 跨账户 Amazon SQS

要确认与这些类型的终端节点关联的订阅,请点击发送到该终端节点的 Confirm Subscription(确认订阅)链接。确认订阅后,您可以从 Amazon SNS 控制台将其删除

对于所有其他情况,您必须将该终端节点重新订阅到该 SNS 主题,然后执行以下操作将其删除:

1.    打开 Amazon SNS 控制台

2.    在左侧导航窗格中,选择 Subscriptions(订阅)。

3.    在 Subscriptions(订阅)页面上,找到要删除的订阅。然后选择 Request confirmation(请求确认)。确认请求将发送到指定的终端节点。

4.    根据您使用的终端节点类型,执行下面的一项操作来确认订阅:

对于电子邮件端点

在您的电子邮件收件箱中,打开具有以下主题行的电子邮件:AWS Notification - Subscription Confirmation(AWS 通知 – 订阅确认)。然后选择 Confirm Subscription(确认订阅)。
注意:如果您没有看到订阅确认电子邮件,请检查电子邮件的垃圾邮件和垃圾文件夹。

对于跨账户 Amazon SQS 终端节点

在 Amazon SQS 队列中找到订阅确认消息。然后,向消息正文中的 SubscribeURL 发送一个 HTTP GET 请求。有关更多信息,请参阅向另一个账户中的 Amazon SQS 队列发送 Amazon SNS 消息

对于 HTTP 和 HTTPS 终端节点

确保您的终端节点可以处理 Amazon SNS 用于发送订阅确认和通知消息的 HTTP POST 请求。有关更多信息,请参阅确保您的终端节点已准备好处理 Amazon SNS 消息

5.    当订阅处于 Confirmed(已确认)状态时,删除订阅

注意:对于电子邮件、HTTP 和 HTTPS 终端节点,必须在删除订阅三天后才能从账户中将其移除。

排查“权限被拒绝”错误

执行以下操作,确认尝试删除主题订阅的 IAM 实体具有取消订阅所需的权限:

1.    打开 IAM 策略模拟器控制台

2.    在左侧的 Users, Groups, and Roles(用户、组和角色)窗格中,选择您用来删除主题订阅的 IAM 实体。

3.    在 Policy Simulator(策略模拟器)窗格中,对于 Select service(选择服务)下拉列表,选择 SNS

4.    对于 Select actions(选择操作)下拉列表,选择 Unsubscribe(取消订阅)。

5.    选择 Run Simulation(运行模拟)。

6.    在 Action Settings and Results(操作设置和结果)下的 Permission(权限)列中,检查取消订阅权限是Allowed(允许)还是 Denied(拒绝)。

如果您的 IAM 实体不允许执行 sns:Unsubscribe 操作,请联系系统管理员并要求他们添加所需的权限。有关更多信息,请参阅添加和删除 IAM 身份权限


这篇文章对您有帮助吗?


您是否需要账单或技术支持?