我想使用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
(请参见屏幕截图)
我为解决该问题所做的就是创建一个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的许可吗?答案 0 :(得分:0)
错误消息非常准确地指出了问题。用于创建CloudFormation堆栈的凭证(除非您在堆栈创建期间指定了角色,否则除非您指定了角色,否则大概是您的登录凭证)无权创建Amazon SNS主题。
您应该查看与您的IAM用户相关联的权限,并添加必要的权限。
添加SNS主题策略不会产生任何影响,因为它用于向SNS授予一组权限,而您需要创建主题本身的权限。