aws签名未在amazon api中验证

aws签名未在amazon api中验证,api,amazon-web-services,coldfusion,amazon,Api,Amazon Web Services,Coldfusion,Amazon,我已经使用代码生成了aws签名 function getSignatureKey(key, dateStamp, regionName, serviceName) { var kDate= lCase(HMAC(ARGUMENTS.dateStamp,"AWS4" & ARGUMENTS.key,"hmacsha256")); var kRegion= lCase(HMAC(ARGUMENTS.regionName,binaryDecode(kDate,'hex'),"h

我已经使用代码生成了aws签名

function getSignatureKey(key, dateStamp, regionName, serviceName) {
    var kDate= lCase(HMAC(ARGUMENTS.dateStamp,"AWS4" & ARGUMENTS.key,"hmacsha256"));
    var kRegion= lCase(HMAC(ARGUMENTS.regionName,binaryDecode(kDate,'hex'),"hmacsha256"));
    var kService=lCase(HMAC(ARGUMENTS.serviceName,binaryDecode(kRegion,'hex'),"hmacsha256"));
    var kSigning= lCase(HMAC("aws4_request",binaryDecode(kService,'hex'),"hmacsha256"));

    return kSigning;
}

<cfset signature = getSignatureKey("fdsaadsf87324hdsfo4324d324", "20170504", "us-west-2", "AWSECommerceService")> 
函数getSignatureKey(键、日期戳、regionName、serviceName){ var kDate=lCase(HMAC(ARGUMENTS.dateStamp,“AWS4”和ARGUMENTS.key,“hmacsha256”); var kRegion=lCase(HMAC(ARGUMENTS.regionName,binaryDecode(kDate,'hex'),“hmacsha256”); var kService=lCase(HMAC(ARGUMENTS.serviceName,binaryDecode(kRegion,'hex'),“hmacsha256”); var kSigning=lCase(HMAC(“aws4_请求”,二进制解码(kService,'hex'),“hmacsha256”); 返回kSigning; } 但是当我调用api并转储响应时,它会说 “我们计算的请求签名与您提供的签名不匹配”

我正在跟踪我的链接 当我输入它们的值时,我的结果与它们的结果相匹配。
但当我输入自己帐户的原始值时,它不匹配。

首先,找出应用程序需要的签名版本:2或4。该JS库似乎是用于。上面的部分代码用于签名版本4(请注意“AWS4”),这是非常不同的。虽然两者都不仅仅是生成一个签名密钥。@Leigh感谢您的回复抱歉我错误地包含了错误的链接,我实际上是在跟踪您的链接,没关系。1) 那个版本呢?为了避免花费大量时间旋转轮子,找出您需要的版本签名是非常重要的:2还是4?他们非常不同。2) 哪个API?ColdFusion内置了对s3的支持(仅限签名版本2)。3) 就像我提到的,生成一个签名所涉及的不仅仅是那个片段。看看API:和。我正在为版本4生成签名。我正在调用“itemsearch”api,但我没有在其中包含“associatetag”。这是一个问题吗?我如何才能找到它?@Leigh我应该成为一名亚马逊员工来调用api,因为我已经研究过了,要创建员工标签,我需要成为一名亚马逊员工。我可以在没有关联的情况下调用api吗??