amazon-web-services - 无法使用 cURL 将消息放入 SQS 队列
问题描述
我们正在尝试从具有 IAM 角色且对 SQS 和 EC2 具有完全权限的 EC2 实例运行以下 cURL 命令。
curl -v https://sqs.us-east-2.amazonaws.com/2775421xxxxx/QueueName -d "Action=SendMessage&Version=2011-10-01&MessageBody=example"
错误
<?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2011-10-01/">
<Error>
<Detail>
<Type>Sender</Type>
<Code>AccessDenied</Code>
<Message>Access to the resource https://sqs.us-east-2.amazonaws.com/2775421xxxxx/QueueName is denied.</Message>
<Detail/>
</Error>
<RequestId>01a5e8f1-d9df-5b72-a0d4-bb50bf23f04f</RequestId>
</ErrorResponse>
你能帮助我们吗?
解决方案
如果您使用 cURL,则需要为每个请求提供AccessKeyId
& 。SecretAccessKey
否则,请求未签名,您会得到AccessDenied
结果。
在这样做之前,我建议使用AWS CLI ,其好处是 EC2-Instance-Profile 在通过AWS CLI的每次调用中自动使用。
在您的示例中,它看起来像这样:
aws sqs send-message --queue-url https://sqs.us-east-2.amazonaws.com/2775421xxxxx/QueueName --message-body "example"
推荐阅读
- authentication - 使用 JWT 进行身份验证的最佳实践
- html - 在 Input 中插入同一个 Component 的 ID
- spring-boot - Springboot Postgres在服务器上响应缓慢
- android - 带有 oidc 的 Flutter 应用程序可以在 android 7 上运行,但不能在 v9 和 v10 上运行
- git - 如果我为每个 repo 设置元数据(用户名和电子邮件),Git 如何知道要使用的那个?
- django - 创建每个 django 项目并尝试运行服务器后出现此错误
- python - PyLint W0143 警告:与可调用对象进行比较
- javascript - 为什么从 div 扩展的自定义元素在样式方面不像 div
- spring - Spring自定义查询转义:
- javascript - 同时加载多个图像