[ 
https://issues.apache.org/jira/browse/HDDS-1948?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Elek, Marton updated HDDS-1948:
-------------------------------
    Description: 
This problem is reported offline by [[email protected]].

When aws-sdk-go is used to access to s3 gateway of Ozone it sends the Multi 
Part Upload initialize message with "application/octet-stream" Content-Type. 

This Content-Type is missing from the aws-cli which is used to reimplement s3 
endpoint.

The problem is that we use the same rest endpoint for initialize and complete 
Multipart Upload request. For the completion we need the 
CompleteMultipartUploadRequest parameter which is parsed from the body.

For initialize we have an empty body which can't be serialized to 
CompleteMultipartUploadRequest.

The workaround is to set a specific content type from a filter which help up to 
create two different REST method for initialize and completion message.

Here is an example to test (using bogus AWS credentials).

{code}
curl -H 'Host:yourhost' -H 'User-Agent:aws-sdk-go/1.15.11 (go1.11.2; linux; 
amd64)' -H 'Content-Length:0' -H 'Authorization:AWS4-HMAC-SHA256 
Credential=qwe/20190809/ozone/s3/aws4_request, 
SignedHeaders=content-type;host;x-amz-acl;x-amz-content-sha256;x-amz-date;x-amz-storage-class,
 Signature=7726ed63990ba3f4f1f796d4ab263f5d9c3374528840f5e49d106dbef491f22c' -H 
'Content-Type:application/octet-stream' -H 'X-Amz-Acl:private' -H 
'X-Amz-Content-Sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
 -H 'X-Amz-Date:20190809T070142Z' -H 'X-Amz-Storage-Class:STANDARD' -H 
'Accept-Encoding:gzip' -X POST 
'http://localhost:9999/docker/docker/registry/v2/repositories/apache/ozone-runner/_uploads/2173f019-09c3-466b-bb7d-c31ce749d826/data?uploads
{code}

Without the patch it returns with HTTP 405 (Not supported Media Type).

  was:
This problem is reported offline by [[email protected]].

When aws-sdk-go is used to access to s3 gateway of Ozone it sends the Multi 
Part Upload initialize message with "application/octet-stream" Content-Type. 

This Content-Type is missing from the aws-cli which is used to reimplement s3 
endpoint.

The problem is that we use the same rest endpoint for initialize and complete 
Multipart Upload request. For the completion we need the 
CompleteMultipartUploadRequest parameter which is parsed from the body.

For initialize we have an empty body which can't be serialized to 
CompleteMultipartUploadRequest.

The workaround is to set a specific content type from a filter which help up to 
create two different REST method for initialize and completion message.


> S3 MPU can't be created with octet-stream content-type 
> -------------------------------------------------------
>
>                 Key: HDDS-1948
>                 URL: https://issues.apache.org/jira/browse/HDDS-1948
>             Project: Hadoop Distributed Data Store
>          Issue Type: Bug
>          Components: S3
>            Reporter: Elek, Marton
>            Assignee: Elek, Marton
>            Priority: Major
>
> This problem is reported offline by [[email protected]].
> When aws-sdk-go is used to access to s3 gateway of Ozone it sends the Multi 
> Part Upload initialize message with "application/octet-stream" Content-Type. 
> This Content-Type is missing from the aws-cli which is used to reimplement s3 
> endpoint.
> The problem is that we use the same rest endpoint for initialize and complete 
> Multipart Upload request. For the completion we need the 
> CompleteMultipartUploadRequest parameter which is parsed from the body.
> For initialize we have an empty body which can't be serialized to 
> CompleteMultipartUploadRequest.
> The workaround is to set a specific content type from a filter which help up 
> to create two different REST method for initialize and completion message.
> Here is an example to test (using bogus AWS credentials).
> {code}
> curl -H 'Host:yourhost' -H 'User-Agent:aws-sdk-go/1.15.11 (go1.11.2; linux; 
> amd64)' -H 'Content-Length:0' -H 'Authorization:AWS4-HMAC-SHA256 
> Credential=qwe/20190809/ozone/s3/aws4_request, 
> SignedHeaders=content-type;host;x-amz-acl;x-amz-content-sha256;x-amz-date;x-amz-storage-class,
>  Signature=7726ed63990ba3f4f1f796d4ab263f5d9c3374528840f5e49d106dbef491f22c' 
> -H 'Content-Type:application/octet-stream' -H 'X-Amz-Acl:private' -H 
> 'X-Amz-Content-Sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
>  -H 'X-Amz-Date:20190809T070142Z' -H 'X-Amz-Storage-Class:STANDARD' -H 
> 'Accept-Encoding:gzip' -X POST 
> 'http://localhost:9999/docker/docker/registry/v2/repositories/apache/ozone-runner/_uploads/2173f019-09c3-466b-bb7d-c31ce749d826/data?uploads
> {code}
> Without the patch it returns with HTTP 405 (Not supported Media Type).



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to