我是亚马逊网络服务的新手。我能够为Amazon S3生成预先签名的URL,但不能为Amazon SQS生成。
提前感谢您的时间和帮助。
答案 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.