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

上次更新日期:2022 年 7 月 29 日

我为另一个 AWS 账户中的 Amazon Simple Notification Service (Amazon SNS) 主题订阅了 Amazon Simple Queue Service (Amazon SQS) 队列。从 Amazon SNS 控制台查看或编辑我的跨账户订阅的属性时,我收到“授权错误”。 如何解决此问题?

简短描述

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

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

解决方案

使用 AWS 控制台

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

使用 GetSubscriptionAttributes

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

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

以下示例使用 AWS CLI 中的 GetSubscriptionAttributes,并且将 SubscriptionArn 用作请求参数。要检索 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 账户现在是创建的订阅资源的拥有者。