我嘗試發佈 Amazon Simple Notification Service (Amazon SNS) 主題,卻收到「publish operation」錯誤。
解決方法
根據您收到的 Amazon SNS「publish operation」錯誤類型,完成疑難排解步驟。
「An error occurred (AuthorizationError) when calling the Publish operation」
發生此錯誤的原因是 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的 AWS Identity and Access Management (IAM) 角色權限和 SNS 政策不正確。
若要解決此錯誤,請參閱如何使用 IAM 角色,從跨帳戶 Amazon EC2 執行個體發佈 Amazon SNS 主題?
「An error occurred (KMSAccessDenied) when calling the Publish operation」
當您嘗試從使用伺服器端加密的 AWS 跨帳戶 Amazon EC2 執行個體發佈 SNS 主題時,會發生此錯誤。發生此錯誤的原因是 IAM 和 AWS Key Management Service (AWS KMS) 權限不正確。您的 EC2 執行個體 IAM 角色權限和 KMS key 的 AWS KMS key 政策不正確。
若要解決此錯誤,請啟用您的 AWS KMS key,並將您的 AWS KMS key 政策和 IAM 政策更新為正確的權限。
**注意:**最佳實務是使用 IAM 政策授予最低權限權限。
請完成以下步驟:
-
請確認您的 AWS KMS key 已啟用。
-
確認在 AWS KMS 金鑰政策中,您的 EC2 執行個體 IAM 角色獲准執行 kms:GenerateDataKey* 與 kms:Decrypt。這是用於 SNS 主題伺服器端加密的 KMS key 金鑰政策,類似以下內容:
{ "Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/cross-acc-ec2-sns-publish-role"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "*"
}
-
將以下 IAM 角色政策附加至您的 EC2 執行個體,並包含 kms:GenerateDataKey* 和 kms:Decrypt 權限:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "your_KMS_Key_ARN"
}
]
}
**注意:**將 your_KMS_Key_ARN 替換為您的 KMS Key Amazon Resource Name (ARN)。