用户无权执行:资源上的SNS:CreateTopic

时间:2018-06-20 12:13:41

标签: amazon-web-services amazon-cloudformation amazon-sns amazon-cloudwatch

我想使用CloudWatch监视某些参数(TotalErrorRate和Latency),并且希望在引发(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

但是我得到这个错误: User is not authorized to perform: SNS:CreateTopic on resource(Service: AmazonSNS; Status Code: 403; Error Code: AuthorizationError(请参见屏幕截图) enter image description here

我为解决该问题所做的就是创建一个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: '*'

但是问题仍然存在。

编辑: 在SNS控制台中,我可以手动创建一个新主题。

难道这不意味着我获得了createTopic的许可吗?

1 个答案:

答案 0 :(得分:0)

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

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

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