API:sqs:CreateQueue始终被拒绝

时间:2018-10-17 17:56:58

标签: amazon-cloudformation

我正在尝试创建一个具有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。但是我不确定如何附加策略以允许创建队列。有人请给我一个完整的例子。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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