I’m trying to make my own Spaces API client and I’m hitting some snags.

I’m trying to access spaces API without having to use AWS SDK as that thing is a beast and I’m aiming to do something much lighter and PHP 7 compatible.

I’m loosely (since it’s meant for AWS) following this code example of creating a AWS version 4 signature and I keep getting the error, InvalidArgument, that’s not very helpful. Looking up the error on SO, it seems that AWS at least shows an actual error message as well to help guide you to what you are doing wrong, but spaces is lacking that so I’m now out in the cold and lost.

I’m hoping someone can give me some pointers on what I’m doing wrong. I’d like to have a nice way to upload files from my web admin portal and not have to log into DO to do my uploading.


These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
1 answer

I finally got it working correctly, I was doing the canonicalRequest body incorrectly which was causing the issue.

  • Thanks for posting this I’m still on the hunt for what’s causing my issue with uploading to spaces API where I end up getting a InvalidAgurment: null response from the space-api through a client library. My guess is that the the library I’m using isn’t formatting the request correctly similar to yours. Do you happen to know how your canonical request body was malformed?

    • it’s been so long, but I believe it was the url or the body was not being included in the signature. making an AWS signature is a pain, but I now have it nailed down.