All HTTP/1.1 requests need to have either a Content-Length or be Transfer-Encoding "chunked". Amazon should support either, but they don't.
So you need to set a Content-Length on your http Request, since it can't be inferred from your http Request's Body.
Just set your http.Request.ContentLength.