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

2 分钟阅读
0

我想删除我的 Amazon Simple Notification Service(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(待确认)状态

**重要:**如果您删除订阅的主题时,订阅处于 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 Policy Simulator 控制台

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 身份权限

检查您的源身份是否受区域支持

您要向其发送消息的国家/地区或 AWS 区域必须支持您正在使用的源身份

例如,要向美国目的地电话号码发送消息,您所在区域必须有支持的美国源号码(TFN/10DLC/ShortCode)。或者,要向加拿大目的地电话号码发送消息,您所在区域必须有支持的加拿大源号码(LongCode/ShortCode)。

有关支持和不支持每种源身份的国家/地区的完整列表,请参阅支持的区域和国家/地区


AWS 官方
AWS 官方已更新 2 个月前