访问Amazon SP API Feed文档时遇SignatureDoesNotMatch错误求助
亚马逊SP API Feed文档链接SignatureDoesNotMatch错误排查求助
成功调用亚马逊SP API的Feed文档创建接口生成Feed文档链接,但访问该链接时触发SignatureDoesNotMatch签名错误,错误详情如下:
<Error> <Code>SignatureDoesNotMatch</Code> <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message> <AWSAccessKeyId>ID</AWSAccessKeyId> <StringToSign>AWS4-HMAC-SHA256 20230808T124615Z 20230808/us-east-1/s3/aws4_request 61c729c2ca5fb09dd58a387ef1d3ace2133e80b84604aceebc7126e1f574adc9</StringToSign> <SignatureProvided>60c4b5671d3a97f085e0e306a1458935b4b73e77e34d29184677424ed5bae5aa</SignatureProvided> <StringToSignBytes>41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 0a 32 30 32 33 30 38 30 38 54 31 32 34 36 31 35 5a 0a 32 30 32 33 30 38 30 38 2f 75 73 2d 65 61 73 74 2d 31 2f 73 33 2f 61 77 73 34 5f 72 65 71 75 65 73 74 0a 36 31 63 37 32 39 63 32 63 61 35 66 62 30 39 64 64 35 38 61 33 38 37 65 66 31 64 33 61 63 65 32 31 33 33 65 38 30 62 38 34 36 30 34 61 63 65 65 62 63 37 31 32 36 65 31 66 35 37 34 61 64 63 39</StringToSignBytes> <CanonicalRequest>GET //NinetyDays/amzn1.tortuga.4.na.15401127-ae1a-4f28-a919-591f7b836d65.T2CN4ZABFR7TJ7 X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA5U6MO6RANIQBJIW5%2F20230808%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230808T124615Z&X-Amz-Expires=300&X-Amz-SignedHeaders=content-type%3Bhost content-type: host:tortuga-prod-na.s3-external-1.amazonaws.com content-type;host UNSIGNED-PAYLOAD</CanonicalRequest> <CanonicalRequestBytes>47 45 54 0a 2f 2f 4e 69 6e 65 74 79 44 61 79 73 2f 61 6d 7a 6e 31 2e 74 6f 72 74 75 67 61 2e 34 2e 6e 61 2e 31 35 34 30 31 31 32 37 2d 61 65 31 61 2d 34 66 32 38 2d 61 39 31 39 2d 35 39 31 66 37 62 38 33 36 64 36 35 2e 54 32 43 4e 34 5a 41 42 46 52 37 54 4a 37 0a 58 2d 41 6d 7a 2d 41 6c 67 6f 72 69 74 68 6d 3d 41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 26 58 2d 41 6d 7a 2d 43 72 65 64 65 6e 74 69 61 6c 3d 41 4b 49 41 35 55 36 4d 4f 36 52 41 4e 49 51 42 4a 49 57 35 25 32 46 32 30 32 33 30 38 30 38 25 32 46 75 73 2d 65 61 73 74 2d 31 25 32 46 73 33 25 32 46 61 77 73 34 5f 72 65 71 75 65 73 74 26 58 2d 41 6d 7a 2d 44 61 74 65 3d 32 30 32 33 30 38 30 38 54 31 32 34 36 31 35 5a 26 58 2d 41 6d 7a 2d 45 78 70 69 72 65 73 3d 33 30 30 26 58 2d 41 6d 7a 2d 53 69 67 6e 65 64 48 65 61 64 65 72 73 3d 63 6f 6e 74 65 6e 74 2d 74 79 70 65 25 33 42 68 6f 73 74 0a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 0a 68 6f 73 74 3a 74 6f 72 74 75 67 61 2d 70 72 6f 64 2d 6e 61 2e 73 33 2d 65 78 74 65 72 6e 61 6c 2d 31 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 6f 6d 0a 0a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3b 68 6f 73 74 0a 55 4e 53 49 47 4e 45 44 2d 50 41 59 4c 4f 41 44</CanonicalRequestBytes> <RequestId>6ZT96W3BYGNWY38D</RequestId> <HostId>F3JHNt5H3NanKm6rJOG1vbzRhSHuDeNpr4tLIPasUTr64KI6HvpUQdwErURNYRK4Z5wYyWif7io=</HostId> </Error>
调用接口的操作细节
- 请求方式:POST
- 请求体包含:
"contentType":"text/xml; charset=utf-8" - 请求头部已配置合法的认证token
- 使用Postman集合进行接口调用
排查建议
- 签名生成逻辑校验
- 核对
StringToSign中的时间戳(20230808T124615Z)与请求的X-Amz-Date是否完全一致,签名生成时的时间必须严格匹配请求时间 - 检查Canonical Request中的路径:错误里的路径是
//NinetyDays/...,正常S3路径应为单斜杠开头,确认签名生成时是否多写入了斜杠 - 验证Signed Headers(
content-type;host)是否与实际请求头部完全对应,注意头部名称的大小写、顺序不能出错 - 确认AWS Secret Access Key是否正确,必须和
X-Amz-Credential中的Access Key配对使用
- 核对
- Feed链接使用校验
- 确认预签名URL是否在有效期内(错误中
X-Amz-Expires=300,即5分钟),过期后需重新生成 - 访问链接时不要修改任何URL参数或路径,预签名URL的任何变动都会导致签名失效
- 确认预签名URL是否在有效期内(错误中
- Postman配置校验
- 检查Postman中的AWS Signature认证配置,确认区域(us-east-1)、服务(s3)是否正确
- 核对请求头部的
Content-Type是否和签名生成时的一致,错误中Canonical Request里的content-type:为空,可能是签名生成时未正确携带该头部
内容的提问来源于stack exchange,提问作者moh
相关产品推荐
相关产品推荐

