【问题标题】:User is not authorized to perform: SNS:CreateTopic on resource用户无权执行:SNS:CreateTopic on resource
【发布时间】:2022-05-03 05:03:20
【问题描述】:

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

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 控制台中,我可以手动创建一个新主题。不是说我获得了创建Topic的权限吗?

【问题讨论】:

  • 您的 IAM 用户似乎没有足够的权限。请帐户管理员授予您创建主题的权限。
  • @klubi 在 SNS 控制台中,我可以手动创建一个新主题。这不应该意味着我获得了创建主题的权限吗?
  • @thadeuszlay 你解决了这个问题吗?我面临同样的问题。我和其他一些人拥有AmazonSNSFullAccess 许可。我可以在控制台中执行所有 SNS 操作,但是当我以编程方式尝试(如发布)时,我收到授权错误。 com.amazonaws.services.sns.model.AuthorizationErrorException: User: arn:aws:iam::*:user/* is not authorized to perform: SNS:Publish on resource: arn:aws:sns:**:app/GCM/* with an explicit deny (Service: AmazonSNS; Status Code: 403; Error Code: AuthorizationError; Request ID: *)
  • @SuryavelTR 我面临与您完全相同的问题。我有AmazonSNSFullAccess,我可以从 AWS 控制台 UI 执行所有操作,但不能通过 AWS CLI 或 SDK/编程方式执行任何操作。您的问题找到解决方案了吗?
  • @miiiiii 是的。对于 Android,我必须在 aws-configuration.json 中提供 CredentialsProvider 才能使其正常工作。 gist.github.com/xvelx/767c4f44ee3f1e169a0f9769a8e52f2c 同样,我必须在服务器端进行类似的配置,以便我的 API 可以发布通知。我不记得我做了什么。我会检查我是否还有旧项目。

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


【解决方案1】:

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

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

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

【讨论】:

  • 在 SNS 控制台中,我可以手动创建一个新主题。这不应该意味着我获得了创建主题的权限吗?
  • 我想知道问题是否与与主题相关的订阅有关?尝试使用 AWS::SNS::Topic 但不使用 Subscription 子部分创建一个非常小的堆栈。如果可行,请添加回Subscription 并查看它是否给出错误。从小处着手,尝试取得成功,然后将事情放回去,直到发现问题为止。
【解决方案2】:

我在使用 Amazon SES 时遇到了类似的问题。显然我的“AmazonSESFullAccess”权限还不够,我通过在https://console.aws.amazon.com/iam/home#/users/MY_IAM_USER_NAME_GOES_HERE@ IAM 用户添加“AmazonSNSFullAccess”权限解决了这个问题

【讨论】:

    猜你喜欢
    • 2016-04-19
    • 1970-01-01
    • 2023-03-19
    • 2014-03-24
    • 2020-06-08
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多