跳至内容

为什么无法删除我的 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"

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

解决方法

检查您的 Amazon SNS 主题订阅是处于“已删除”还是“待确认”状态

重要事项: 如果您在删除订阅的主题时订阅处于 Deleted(已删除)或 Pending Confirmation(待确认)状态,则无法从账户中手动删除订阅。您必须等待两天,以便让 Amazon SNS 从您的账户中自动移除订阅。
注意: 如果订阅在两天后未自动删除,请联系 AWS Support

  1. 打开 Amazon SNS 控制台
  2. 在左侧导航窗格中,选择 Subscriptions(订阅)。
  3. Subscriptions(订阅)页面上,找到要删除的订阅。然后,在 Status(状态)列中,检查订阅是处于 Deleted(已删除)还是 Pending Confirmation(待确认)状态。
  4. 根据您的订阅是处于已删除还是待确认状态,完成以下任一部分中的步骤。如果您的订阅未处于已删除待确认状态,则完成排查“权限被拒绝”错误部分中的步骤。

您的 Amazon SNS 主题订阅处于“已删除”状态

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

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

请执行以下操作:

  1. 在您的电子邮件收件箱中,打开具有以下主题行的电子邮件: AWS 通知 - 取消订阅确认
  2. 在电子邮件底部,选择 Resubscribe(重新订阅)链接。点击 Resubscribe(重新订阅)链接后,系统会重新确认电子邮件订阅,然后您可以从 Amazon SNS 控制台将其删除

-Or-

按照以下步骤重新创建已删除的订阅:

  1. 重新创建已删除的电子邮件订阅,然后进行确认
  2. 创建并确认订阅后,请将其从 Amazon SNS 控制台中删除。
    注意: 电子邮件垃圾邮件过滤器也可能取消订阅邮件列表的电子邮件地址。

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

完成以下步骤:

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

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

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

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

当以下任何类型的端点订阅 SNS 主题时,在确认订阅之前,订阅将保持待确认状态:

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

要确认与上述类型的端点关联的订阅,请点击发送到该端点的确认订阅链接。确认订阅后,您可以从 Amazon SNS 控制台将其删除。

对于所有其他情况,您必须为端点重新订阅 SNS 主题,然后完成以下步骤将其删除:

  1. 打开 Amazon SNS 控制台
  2. 在左侧导航窗格中,选择 Subscriptions(订阅)。
  3. Subscriptions(订阅)页面上,找到要删除的订阅。然后,选择 Request confirmation(请求确认)。确认请求将发送至指定端点。
  4. 根据您使用的端点类型,执行以下操作之一来确认订阅:
  5. 对于电子邮件端点

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

对于跨账户 Amazon SQS 端点

在 Amazon SQS 队列中找到订阅确认消息。然后,向邮件正文中的 SubscribeURL 发送 HTTP GET 请求。有关更多信息,请参阅 Sending Amazon SNS messages to an Amazon SQS queue in a different account(将 Amazon SNS 消息发送到其他账户中的 Amazon SQS 队列)。

对于 HTTP 和 HTTPS 端点

确保您的端点可以处理 Amazon SNS 用于发送订阅确认和通知消息的 HTTP POST 请求。有关更多信息,请参阅 Make sure your endpoint is ready to process Amazon SNS messages(确保您的端点已准备好处理 Amazon SNS 消息)。

当订阅处于 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 实体不允许执行 Unsubscribe(取消订阅)操作,请联系系统管理员并要求他们添加所需的权限。有关详细信息,请参阅添加和删除 IAM 身份权限

AWS 官方已更新 3 年前