The Java client is sensitive to the case of the ETag header name.

Sadly, the WEBrick Response class's [] method downcase's header names
before putting them in the response header dictionary.  So 'ETag' ends
up 'etag'
which the AWS Java SDK doesn't recognize.  This simple fix replaces
response['ETag'] = ...  call with response.header['ETag'] = ...