我正在尝试使用cloudformation创建一个sqs队列,但是在控制台中始终出现此错误。

API: sqs:CreateQueue Access to the resource https://sqs.us-east-1.amazonaws.com/ is denied.

显然,我缺少某种许可。这个guide并没有真正说明我该如何解决。

这是我编写的代码:
AWSTemplateFormatVersion: "2010-09-09"

Resources:

  MyQueue:
    Type: AWS::SQS::Queue
    Properties:
      FifoQueue: false
      QueueName: sqs-test
      ReceiveMessageWaitTimeSeconds: 20
      RedrivePolicy:
        deadLetterTargetArn:
          Fn::GetAtt:
          - "MyDLQ"
          - "Arn"
        maxReceiveCount: 4
      Tags:
      -
        Key: "ProjectName"
        Value: "project-x"

  MyDLQ:
    Type: AWS::SQS::Queue
    Properties:
      FifoQueue: false
      QueueName: sqs-dlq-test

我正在尝试了解doc。但是我不确定如何附加策略以允许创建队列。有人请给我一个完整的例子。

最佳答案

泰隆就您的问题发表了评论。检查执行CloudFormation的用户的权限。如果直接运行命令,通常很容易检查。在某些情况下,您可能正在使用自动化的更复杂环境。

我发现对自动化环境中的权限进行故障排除的最佳方法是通过CloudTrail。在任何API调用失败之后,无论是从CLI,CloudFormation还是其他来源,您都可以在CloudTrail中查找该调用。

在这种情况下,在失败的时间范围内搜索“Event Name” =“CreateQueue”将显示具有以下详细信息的结果:

  • 源IP地址;该字段可能会说诸如cloudformation.amazonaws.com之类的内容,或者您​​的机器/办公室的IP。当您需要基于源过滤事件时很有用。
  • 用户名;就我而言,这是运行CFN模板的代理的EC2实例ID。
  • 访问密钥ID ;对于EC2实例,这可能是一组临时访问凭据,但是对于实际用户,它将向您显示使用了什么密钥。
  • 实际事件数据;对于非权限错误尤其有用,实际事件可能会向您显示请求本身中的错误。

  • 就我而言,运行自动化的特定EC2实例已过时,需要进行更新以使用正确的IAM角色/实例配置文件。 CloudTrail帮助我进行了跟踪。

    关于amazon-cloudformation - API:sqs:CreateQueue始终被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52860945/

    10-13 02:05