Closed amwolff closed 9 months ago
got a transparent proxy to run awscli through, connected to a personal bucket through the gateway. uploading a sufficiently large file to test copying with.
ok, testing with minio. I've identified:
POST http://localhost:8912/test/d1.tar.zst?uploads HTTP/1.1
PUT http://localhost:8912/test/d1.tar.zst?uploadId=NTYyODBjYWMtYTNlZC00NTA5LThhYzgtZGFhZjAwMTEyZTFhLjc1OTkwMmZiLTdiMTYtNGIxZS1iNWFhLWI5NWY1MGM2OTUzNQ&partNumber=7 HTTP/1.1
POST http://localhost:8912/test/d1.tar.zst?uploadId=NTYyODBjYWMtYTNlZC00NTA5LThhYzgtZGFhZjAwMTEyZTFhLjc1OTkwMmZiLTdiMTYtNGIxZS1iNWFhLWI5NWY1MGM2OTUzNQ HTTP/1.1
that looks like the whole multipart upload workflow.
@amwolff is there anything else you're looking for here?
@nergdron after you upload with multipart upload, you need to check that UploadPartCopy copies parts in the same manner that MPU uploaded parts (so while issuing a copy for a big enough object to trigger UploadPartCopy)
alright, on an s3 copy
, we get the following:
HEAD /test/d1.tar.zst HTTP/1.1
POST http://localhost:8912/test/d2.tar.zst?uploads HTTP/1.1
PUT /test/d2.tar.zst?uploadId=OTcxZWE1M2EtM2ZjMy00NWE1LWJmYjktZWVkMWNlNzgyYTVmLjU2ZTZiZWVhLTdkYmItNDkyNC04MGQwLTg1OTRjMGNjMmQ1Ng&partNumber=10 HTTP/1.1
POST /test/d2.tar.zst?uploadId=OTcxZWE1M2EtM2ZjMy00NWE1LWJmYjktZWVkMWNlNzgyYTVmLjU2ZTZiZWVhLTdkYmItNDkyNC04MGQwLTg1OTRjMGNjMmQ1Ng HTTP/1.1
so it appears to be using the same workflow as the original upload, but all the transfers are done server side, as the total packet capture for the copy is only 2.5MiB, instead of the ~12GiB for the original upload.
@amwolff, is this the behaviour you were looking for here? it's what I'd expect from reading the AWS docs.
Do you have the log of requests/responses? It would be useful to see how many UploadPartCopies it's doing.
This is the packet capture from doing a copy operation on a ~10G file inside of the same bucket. aws.pcap.gz
from sprint planning: Paul reports that the CLI is doing what rclone does (#337) in the most common case.
Goal
The objective of this task is to verify that AWS CLI uses the UploadPartCopy API to copy objects greater than 5 GB in size while maintaining the original multipart upload structure and not using arbitrary byte ranges or other methods. We can't support the latter, so this is to find out if we can conform to S3's internal limitation without reconfiguring all clients while using Storj's S3-compatible API.
Acceptance Criteria
Links