我想解決當我將訂閱用戶新增至我的 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 使用以身分為基礎的政策