首页 > 解决方案 > 无法使用 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>

你能帮助我们吗?

标签: amazon-web-servicescurlamazon-ec2amazon-sqsamazon-iam

解决方案


如果您使用 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"

推荐阅读