用户无权对资源执行:SNS:CreateTopic

tha*_*lay 7 amazon-web-services amazon-sns aws-cloudformation amazon-cloudwatch

我想使用 CloudWatch 监控某些参数(TotalErrorRate 和延迟),并且当引发 (cloudWatch) 警报时,我想要一个“简单通知服务”(SNS) 向我发送电子邮件:

EscalationTopic:
  Type: "AWS::SNS::Topic"
  Properties:
    DisplayName: My Monitoring
    Subscription:
      - Endpoint: !Ref EmailForNotification
        Protocol: email

EscalationTopicEmailSubscriber:
  Type: "AWS::SNS::Subscription"
  Properties:
    Endpoint: !Ref EmailForNotification
    Protocol: email
    TopicArn: !Ref EscalationTopic
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:( User is not authorized to perform: SNS:CreateTopic on resource(Service: AmazonSNS; Status Code: 403; Error Code: AuthorizationError参见屏幕截图) 在此输入图像描述

我为解决这个问题所做的就是创建一个 topicPolicy:

   SNSTopicPolicy:
     Type: 'AWS::SNS::TopicPolicy'
     Properties:
       Topics:
         - !Ref EscalationTopic
       PolicyDocument:
         Version: '2012-10-17'
         Statement:
           - Effect: Allow
             Action: 'sns:CreateTopic'
             Resource: !Ref EscalationTopic
             Principal:
               AWS: '*'
Run Code Online (Sandbox Code Playgroud)

但问题仍然存在。

编辑:在 SNS 控制台中,我可以手动创建一个新主题。这不是应该意味着我获得了createTopic的权限吗?

Joh*_*ein 0

错误消息非常准确地说明了问题。用于创建 CloudFormation 堆栈的凭证(可能是您的登录凭证,除非您在堆栈创建期间指定了角色)无权创建 Amazon SNS 主题。

您应该查看与您的 IAM 用户关联的权限并添加必要的权限。

添加 SNS 主题策略不会产生任何影响,因为它用于向 SNS 授予一组权限,而您需要权限来创建主题本身。

  • 在SNS控制台中,我可以手动创建一个新主题。这不是应该意味着我获得了createTopic的权限吗? (2认同)