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

2 分钟阅读
0

我想删除我的 Amazon Simple Notification Service (Amazon SNS) 主题订阅。但是,我要么收到错误消息,要么在控制台中看到删除订阅的选项已停用。

简短描述

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

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

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

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

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

“Error code: InvalidParameter - Error message: Invalid parameter: SubscriptionArn Reason: An ARN must have at least 6 elements, not 1”

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

解决方法

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

重要提示:如果您在删除订阅的主题时订阅处于已删除待确认状态,则无法从账户中手动删除订阅。您必须等待三天,以便让 Amazon SNS 从您的账户中自动移除订阅。
**注意:**如果订阅在三天内未自动删除,请联系 AWS Support

打开 Amazon SNS 控制台

在导航窗格中,选择订阅

订阅页面上,找到要删除的订阅。然后,在状态列中,检查订阅是处于已删除还是待确认状态。

根据您的订阅是处于已删除还是待确认状态,完成以下任一部分中的步骤。如果您的订阅未处于已删除待确认状态,则完成排查“权限被拒绝”错误部分中的步骤。

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

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

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

请执行以下操作:

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

-或者-

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

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

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

完成下列步骤:

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

您的 Amazon SNS 主题订阅处于“待确认”状态

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

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

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

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

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

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

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

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

对于跨账户 Amazon SQS 端点

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

对于 HTTP 和 HTTPS 端点

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

当订阅处于已确认状态时,请删除该订阅

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

排查“权限被拒绝”错误

检查取消订阅权限

完成以下步骤,确认尝试删除主题订阅的 IAM 实体拥有取消订阅所需的权限:

  1. 打开 IAM Policy Simulator 控制台
  2. 在左侧的用户、组和角色窗格中,选择您用于删除主题订阅的 IAM 实体。
  3. 策略模拟器窗格中,对于选择服务下拉列表,选择 SNS
  4. 对于选择操作下拉列表,选择取消订阅
  5. 选择运行模拟
  6. 操作设置和结果下的权限列中,检查取消订阅权限是允许还是拒绝

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

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