无法使用cURL将消息PUT到SQS队列

时间:2018-06-18 07:56:13

标签: amazon-web-services curl amazon-ec2 amazon-sqs amazon-iam

我们正在尝试从具有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>

能帮助我们吗。

1 个答案:

答案 0 :(得分:0)

如果您使用的是cURL,则需要提供AccessKeyId&amp;每个请求SecretAccessKey。否则,请求未签名,结果会得到AccessDenied

在此之前,我建议使用AWS CLI,这样做的好处是通过AWS CLI在每次通话中自动使用EC2-Instance-Profile。

在您的示例中,它看起来像这样:

aws sqs send-message --queue-url https://sqs.us-east-2.amazonaws.com/2775421xxxxx/QueueName --message-body "example"