So, Amazon’s API requires this unbelievably complicated “Signature” header to authenticate requests.
I know that n8n has AWS credentials built in, but as far as I know you need to customize the service name depending on the call you’re making. In my case I’m trying to use the amazon selling partner API, but there’s no option for it.
Am I missing something? Is there a way to do this manually with n8n?
Hi @Giovanni_Segar, afaik there is no easy way to access the built-in functionality outside of the HTTP request node and to overwrite individual parts. From taking a quick look art the respective code n8n would determine the service based on the URL provided, which should work in most cases.
Are you seeing any problems related to the service name here here when using the selling partner API?
I am afraid not (apart from perhaps implementing a custom version of the AWS node handling arbitrary AWS service names). I’ll convert this into a feature request for the time being so you and other users can vote on having this implemented.
Seconding this. (Where do I vote on a feature request?) Now that the old Amazon MWS API isn’t working anymore, I’m porting old code to n8n. I think that many of the Amazon services are migrating to this authentication system, so having this as a generally available authentication capability is probably a valuable feature. And/or, n8n could just provide a module for Amazon SP-API - I imagine that programmatically interfacing with Amazon is a really common use case for n8n.
If you’re self hosting, you can install this package and then invoke it from a Code module: https://www.npmjs.com/package/amazon-sp-api. I just installed it today and it seems to work VERY well. I’ll update this thread if I learn more.
If you’re not self-hosting, you can try installing that package on Amazon Lambda and using n8n’s Lambda module. I did that about a year ago when I was still using Make (using a python SP-API library, not the package above). It’s been working very well.