如何获得Amazon SQS预先分配的URL

时间:2014-01-10 13:06:05

标签: amazon-sqs

我是亚马逊网络服务的新手。我能够为Amazon S3生成预先签名的URL,但不能为Amazon SQS生成。

提前感谢您的时间和帮助。

2 个答案:

答案 0 :(得分:1)

Amazon SQS不支持创建预签名网址。您可以查看this论坛帖子了解更多信息。

答案 1 :(得分:0)

您可以使用 REST api 为 SQS 生成预先签名的 url。这是一个使用 aws sdk 创建的预签名 url 示例,用于从 Ruby 中的队列读取消息。

require "httparty"
require("aws-sdk")

message_body = { "hello": "world" }
msg_body_encoded = CGI.escape(message_body.to_json)

signer = Aws::Sigv4::Signer.new(
  service: "sqs",
  region: "us-east-1",
  access_key_id: "ACCESS KEY ID",
  secret_access_key: "SECRET ACCESS KEY"
)

presigned_url = signer.presign_url(
  http_method: "get",
  url: "https://sqs.us-east-1.amazonaws.com/123456789/SomeQueueNmae.fifo/?Action=SendMessage&MessageBody=#{msg_body_encoded}&MessageDeduplicationId=#{dedup_id}&MessageGroupId=Default",
  expires_in: 1000.day.to_i
)

response = HTTParty.get(presigned_url, headers: { "Accept": "application/json" })

puts presigned_url
puts response
# {"SendMessageResponse":{"ResponseMetadata":{"RequestId":"12345678910-100c-510b-96af-12345678910"},"SendMessageResult":{"MD5OfMessageAttributes":null,"MD5OfMessageBody":"fbc24bcc7a1794758fc1327fcfebdaf6","MD5OfMessageSystemAttributes":null,"MessageId":"12345678910-db6c-4e17-b6ac-12345678910","SequenceNumber":"12345678910"}}}

I've written an example for ReceiveMessage and SendMessage via Ruby in this gist.