我正在尝试使用这里提到的此URL从Amazon产品API获取产品相关数据:
http://docs.aws.amazon.com/AWSECommerceService/latest/DG/ItemLookup.html
项目查找URL:
http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[AWS_Access_Key_ID]&Operation=ItemLookup&ItemId=B00008OE6I&Timestamp=[YYYY-MM-DDThh:mm:ssZ]&Signature=[Request_Signature]
我已在URL中输入了所需的详细信息/参数,但我无法理解从何处获取此签名或如何生成此签名?如有任何帮助,将不胜感激。
3条答案
按热度按时间baubqpgj1#
最简单快捷的方法是使用AWS SDK之一。您可以在此处找到完整列表:https://aws.amazon.com/tools/
当你使用SDK的时候,你只需要提供你的访问密钥和秘密密钥。库负责准备签名。
bgibtngc2#
好吧,在Ruby中,一旦它有了SDK,你自己做这些就没有意义了,但是关于签名过程的解释可能对一些人有用。
签名是AWS验证API请求的方式。它作为HTTP请求上的查询字符串参数传递,并根据您自己的请求内容和服务器端的凭据进行验证。
它有两个版本:2和4,解释了here和here。较新的地区(中国和法兰克福)不支持版本2。
在我更熟悉的版本2中,签名是基于以下格式的字符串生成的:
然后,使用 *AWS密钥 * 和 * SHA 256 * 或 SHA1 作为散列算法(取决于您在查询字符串参数 SignatureMethod 上指定的算法)计算该字符串的 HMAC,并将其编码为base64。所有这些操作的结果将是 Signature 参数的值。
我将尝试向您介绍一个使用bash工具手动生成的 CloudWatch 请求。
假设您想要列出您的 CloudWatch 指标,请求(不带签名)如下所示。
因此,要签名的字符串为:
好吧,让我们把它放在一个变量中,然后做所有的魔术(hmac + base64)
然后,在这一切之后,你会得到这样的结果:
这是您的签名,最后,您只需要对它进行url编码,并将其作为另一个查询字符串参数附加到请求中。
***和签名=
如果一切都做对了(将符号字符串放在一起,生成散列并对其进行编码),您的请求将被接受,并且如果您有足够的权限,将被执行。
所以,正如你所看到的,这件事不值得你自己去做。使用SDK。)
falq053o3#
谢谢你们的回应。但我终于找到了我的问题,我的解决方案是在这个宝石:
这就是我真正在寻找的,它最终帮助我实现了我想要的。把它贴在这里,这样人们就可以找到更好的解决方案。