Changing the body to "binary" seems to have fixed it for me. In the example above, you showed the body as a key=
--I don't think this matters, but... also specified the region (us-east-2) and service name (s3) constants rather than global parameters.