如何排除尝试在 Amazon SNS 控制台上查看或修改跨账户 SQS 订阅的属性时出现的“授权错误”?

1 分钟阅读
0

我将我的 Amazon Simple Queue Service (Amazon SQS) 队列订阅到了另一个 AWS 账户中的某 Amazon Simple Notification Service (Amazon SNS) 主题。从 Amazon SNS 控制台查看或编辑我的跨账户订阅的属性时,我遇到一个“授权错误”需要排除。

简短描述

如果您从不拥有该主题的账户为 SQS 队列创建 SNS 主题订阅,则拥有该 SQS 队列的账户拥有该订阅。如果您随后查看或编辑创建了 SNS 主题的账户中的 SNS 订阅属性,则会出现授权错误。

**注意:**与订阅相关的查看和编辑权限不能包含在 SNS 主题策略操作中。请改用以下解决方法。

解决方法

使用 AWS 管理控制台

  1. 在拥有 SNS 主题的账户中打开 Amazon SNS 控制台
  2. 在导航窗格中,选择主题
  3. 选择主题的名称。然后,从订阅选项卡复制 SQS 队列订阅的订阅 ID
  4. 在拥有 SQS 队列的账户中打开 Amazon SNS 控制台
  5. 订阅菜单选项上,选择您在步骤 3 中复制的订阅 ID
  6. 根据需要查看和编辑订阅属性。

使用 GetSubscriptionAttributes

注意: 如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

在用于使用 AWS 命令行界面 (AWS CLI) 或 SDK 创建订阅的账户中,使用 GetSubscriptionAttributes 查看订阅属性。要运行此命令,IAM 用户或角色必须具有 SNS 操作 setSubcriptionAttributes 和 getSubscriptionAttributes 的权限。

以下示例使用 SubscriptionArn 作为请求参数从 AWS CLI 使用 GetSubscriptionAttributes。要检索 SubscriptionArn,请使用 ListSubscriptionsByTopic

aws sns get-subscription-attributes --subscription-arn arn:aws:sns:eu-central-1:1234567890:TestTopicSubOwnerSQS:53XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
{
  "Attributes": {
    "Owner": "9876543210",
    "RawMessageDelivery": "false",
    "TopicArn": "arn:aws:sns:eu-central-1:1234567890:TestTopicSubOwnerSQS",
    "Endpoint": "example@amazon.com",
    "Protocol": "email",
    "PendingConfirmation": "false",
    "ConfirmationWasAuthenticated": "false",
    "SubscriptionArn": "arn:aws:sns:eu-central-1:1234567890:TestTopicSubOwnerSQS:53XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
   }
}

删除并重新创建订阅

如果希望拥有 SNS 主题的 AWS 账户控制 SNS 主题订阅的属性,请执行以下操作:

  1. 删除现有订阅。
  2. 从拥有 SNS 主题的账户创建相同的订阅

拥有 SNS 主题的 AWS 账户现在是创建的订阅资源的所有者。

相关信息

如何为另一个 AWS 账户中的 Amazon SQS 队列重新创建“已删除”的 Amazon SNS 主题订阅?

如何排除尝试向 Amazon SNS 主题添加订阅者时出现的授权错误?

如何排除来自 Amazon SNS 的 HTTP 400“AccessDeniedException”错误?

如何让我的 Amazon SQS 订阅成功接收来自我的 Amazon SNS 主题的通知?

当我尝试将 Lambda 函数订阅到 Amazon SNS 主题时,为什么会出现授权错误?

AWS 官方
AWS 官方已更新 2 年前