amazon-cloudformation - API:sqs:CreateQueue 总是拒绝访问
问题描述
我正在尝试使用 cloudformation 创建一个 sqs 队列,但我一直在控制台中收到此错误。
API: sqs:CreateQueue Access to the resource https://sqs.us-east-1.amazonaws.com/ is denied.
显然我错过了某种许可。本指南并没有真正说明我如何解决这个问题。
这是我制作的代码:
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
我试图理解这个文档。但我不确定如何附加策略以允许创建队列。有人请给我一个完整的例子。
解决方案
泰伦对您的问题的评论是正确的。检查执行 CloudFormation 的用户的权限。如果您直接运行命令,这通常很容易检查。在某些情况下,您可能正在使用更复杂的自动化环境工作。
我发现在自动化世界中解决权限问题的最佳方法是通过 CloudTrail。在任何 API 调用失败后,无论是来自 CLI、CloudFormation 还是其他来源,您都可以在 CloudTrail 中查找调用。
在这种情况下,在失败的时间范围内搜索 "Event Name" = "CreateQueue" 将得到如下详细信息的结果:
- 源 IP 地址;此字段可能会显示类似 cloudformation.amazonaws.com 或您的机器/办公室的 IP。当您需要根据源过滤事件时很有帮助。
- 用户名;在我的例子中,这是运行 CFN 模板的代理的 EC2 实例 ID。
- 访问密钥 ID ; 对于 EC2 实例,这可能是一组临时访问凭证,但对于真实用户,它会显示使用的密钥。
- 实际事件数据;对于非权限错误尤其有用,实际事件可能会向您显示请求本身的错误。
就我而言,运行自动化的特定 EC2 实例已过时,需要更新以使用正确的 IAM 角色/实例配置文件。CloudTrail 帮助我追踪到了这一点。
推荐阅读
- python - 如何隐蔽设置为字符串?
- go - 使用 Apache Beam 进行内存处理
- swift - IOS中的UILongPressGestureRecognizer 13秒长按MKMapView两次不起作用
- node.js - 在 Angular 和 Node.JS 中完成实时输入验证的正确方法是什么?
- php - 更改 HTTP 标头中的状态代码而不影响 Yii 1 Restful API 中的返回数据
- java - 部署后将文件存储在spring boot资源文件夹中
- azure-cosmosdb - 如何在 COSMOS db 容器中实现自连接
- c# - 如何在 ASP.NET Core 3.0 的存储过程中添加参数
- react-native - React Native:防止在 navigation.goBack() 上触发“焦点”侦听器
- reactjs - 在同一屏幕上处理多个平面列表