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

2 分的閱讀內容
0

我想解決當我將訂閱用戶新增至我的 Amazon Simple Notification Service (Amazon SNS) 主題時,我收到的 AWS 身分和存取管理 (IAM) 授權錯誤。

簡短說明

IAM 實體嘗試在沒有訂閱 API 動作許可的情況下,將訂閱新增至 Amazon SNS 主題時,SNS 會傳回以下錯誤:

An error occurred (AuthorizationError) when calling the Subscribe operation: User: your_IAM_user_or_role is not authorized to perform: sns:Subscribe on resource: YOUR_SNS_TOPIC_ARN

**注意:**IAM 實體可能是 IAM 使用者或角色。

若要解決此錯誤,請授予 IAM 實體許可,以便在 Amazon SNS 主題上執行訂閱 API 動作。

如果您收到以「明確拒絕」結尾的相似錯誤

移除明確拒絕 IAM 實體存取 SNS 資源的任何政策陳述式。

解決方法

如果 IAM 實體和 SNS 主題位於不同的 AWS 帳戶

請執行下列兩項操作:

將 IAM 政策陳述式附加到可讓實體執行「sns:Subscribe」動作的 IAM 實體

如需說明,請參閱新增和移除 IAM 身份許可。附加以下範例 IAM 政策陳述式:

**重要事項:「YOUR_SNS_TOPIC_ARN」**取代為您 Amazon SNS 主題的 Amazon Resource Name (ARN)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SNSSubscribePermission",
      "Effect": "Allow",
      "Action": "sns:Subscribe",
      "Resource": "YOUR_SNS_TOPIC_ARN"
    }
  ]
}

將 Amazon SNS 政策陳述式附加到可 IAM 讓實體執行「sns:Subscribe」動作的主題存取政策

如需說明,請參閱如何編輯 Amazon SNS 主題的存取政策?附加以下範例 Amazon SNS 政策陳述式:

**重要事項:「YOUR_IAM USER/ROLE_ARN」取代為您的 IAM 實體 ARN。將「YOUR_SNS_TOPIC_ARN」**取代為您 Amazon SNS 主題的 ARN。

{
  "Sid": "AllowIAMEntity",
  "Effect": "Allow",
  "Principal": {
    "AWS": "YOUR_IAM USER/ROLE_ARN "
  },
  "Action": "sns:Subscribe",
  "Resource": "YOUR_SNS_TOPIC_ARN"
}

如果 IAM 實體和 SNS 主題位於同一帳戶

執行下列任一項作業:

將 IAM 政策陳述式附加到可讓實體執行 "sns:Subscribe" 動作的 IAM 實體

-或-

將 Amazon SNS 政策陳述式附加到可讓實體執行 "sns:Subscribe" 動作的主題存取政策。

如需政策陳述式範例,請參閱本文的如果 IAM 實體和 SNS 主題位於不同的 AWS 帳戶一節。

確認 IAM 實體的政策或 SNS 主題的存取政策均未明確拒絕對 SNS 資源的存取

檢閱 IAM 實體的政策和 SNS 主題的存取政策。然後移除明確拒絕 IAM 實體存取 SNS 資源的任何政策陳述式。

如需詳細資訊,請參閱](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#AccessPolicyLanguage_Interplay)明確和隱含拒絕之間的差異[。

相關資訊

搭配 Amazon SNS 使用以身分為基礎的政策

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