嘗試在 Amazon SNS 主控台檢視或修改跨帳戶 SQS 訂閱屬性時,如何解決「授權錯誤」?

2 分的閱讀內容
0

我將 Amazon Simple Queue Service (Amazon SQS) 佇列訂閱至其他 AWS 帳戶中的 Amazon Simple Notification Service (Amazon SNS) 主題。從 Amazon SNS 主控台檢視或編輯我的跨帳戶訂閱屬性時,我遇到了必須解決的「授權錯誤」。

簡短說明

如果您從沒有主題的帳戶建立 SQS 佇列的 SNS 主題訂閱,則擁有 SQS 佇列的帳戶即會擁有訂閱。然後,如果您在建立 SNS 主題的帳戶中檢視或編輯 SNS 訂閱屬性,就會出現授權錯誤。

注意: 檢視和編輯的訂閱相關權限無法包含在 SNS 主題政策動作。請改用下列解決方案。

解決方法

使用 AWS Console

  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 Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確定您使用的是最新的 AWS CLI 版本

在用於使用 AWS Command Line Interface (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 帳戶現在是建立訂閱資源的擁有者。

相關資訊

如何在另一個 AWS 帳戶中為 Amazon SQS 佇列重新建立「刪除的」Amazon SNS 主題訂閱?

嘗試將訂閱用戶新增至 Amazon SNS 主題時,如何解決授權錯誤?

如何解決 Amazon SNS 的 HTTP 400 “AccessDeniedException” 錯誤?

如何讓我的 Amazon SQS 訂閱成功收到 Amazon SNS 主題的通知?

為什麼當我嘗試將 Lambda 函數訂閱至我的 Amazon SNS 主題時會收到授權錯誤?

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