aws4 icon indicating copy to clipboard operation
aws4 copied to clipboard

Amazon SP-API - Works for everything except for POST

Open Landsailor opened this issue 2 years ago • 5 comments

Hmmm, describing this may have been enough Duck Debugging to point me to where I need to go... :)

I am nowhere approaching a "JavaScript dev", so I set up a node-red server to handle various Amazon SP-API related duties. This might be an issue with my implementation, function code, or Amazon's Selling Partner API itself.

I created an endpoint that uses aws4 to generate the signature based on query data submitted via a GET, returns it, and is then used for requests in our server. It works for everything except POST requests. Those always return a similar "Close, but no cigar" message from Amazon: node-red AWS4 POST Signature Error

Here's the function where I have tried enabling and disabling various options to try to get it to work: node-red AWS4 Function Text They all return a result similar to the one shown.

When I run the identical request in Postman using the same credentials, it works. However, I noticed that Postman also generates a X-Amz-Content-Sha256 header which is not a hash of the just body text.

Any ideas here? Is there any way to get aws4 to return the Canonical Request and StringToSign for debugging purposes?

Thanks in advance!

Landsailor avatar Jun 14 '22 17:06 Landsailor

I had a similar issue. I did not get an X-Amz-Content-Sha256 header although the body was provided before signing the request. To get this work provisionally I made a fork and added my service to this line: https://github.com/mhart/aws4/blob/a413aadd9e4b4e58842937a9ad53354be41ef4a1/aws4.js#L154

tpietsc1 avatar Nov 29 '22 13:11 tpietsc1

Having same issue, works on Postman

chyke007 avatar Apr 22 '23 14:04 chyke007

Hi,

Did you find a solution to this? Is there another way of getting the X-Amz-Content-Sha256 header?

JBetts97 avatar May 30 '23 09:05 JBetts97

Yes, I did find a solution, I had to sign the body also: https://github.com/chyke007/facial-vote/blob/main/facial-vote-frontend/src/pages/api/vote.ts

chyke007 avatar May 30 '23 09:05 chyke007

Perfect! - Thanks @chyke007 for the quick response! 👍🏻

Glad you found solution. I've also managed to resolve my issue and POST the request using AXIOS library: https://medium.com/@joshua.a.kahn/calling-amazon-api-gateway-authenticated-methods-with-axios-and-aws4-6eeda1aa8696

JBetts97 avatar May 30 '23 10:05 JBetts97