S3 multipart upload test: uploads a single file by generating presigned URLs for each part and invoking PUT requests.
Performs both sequential uploading of parts using buffers as well as parallel uploading of parts using streams with adjustable concurrency.
Test shows both client computed MD5 values as well S3 computed part ETags, and same for the final object ETag.
NOTE: an ETag, per RFC 7232, is a quoted string.
Install Node.js dependencies by running "npm install
".
Make sure "index.js
" is an executable by running "chmod +x ./index.js
" if necessary.
Edit "settings.js
" before running as the file to upload is intentionally excluded from this project.
Alternatively, you can specify an optional filename after "./index.js
".
$ ./index.js | tee upload.log
File Size: 324611902
Part Size: 10485760
Total Parts: 31
Upload ID: DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC
-------------
Part 1 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014043Z&X-Amz-Expires=3600&X-Amz-Signature=c6736e5b029ba78c7d8ac6d805d59b9afe32f5654a1520c755b8ea24223c4bba&X-Amz-SignedHeaders=host&partNumber=1&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 1 MD5: "f701d518437317492a2d04bf900411eb"
Part 1 ETag: "f701d518437317492a2d04bf900411eb"
-------------
Part 2 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014059Z&X-Amz-Expires=3600&X-Amz-Signature=696d83988fa88d2b9c331247b4a49a285b25a80cad76a2dc530d21468e7c7bb9&X-Amz-SignedHeaders=host&partNumber=2&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 2 MD5: "a1957c905656f93bf6ddf4101f31e482"
Part 2 ETag: "a1957c905656f93bf6ddf4101f31e482"
-------------
Part 3 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014116Z&X-Amz-Expires=3600&X-Amz-Signature=847f0b77a4e890032c4cc0e6e08815d58310d79fc6a5fab7d67b099404075b0a&X-Amz-SignedHeaders=host&partNumber=3&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 3 MD5: "1a0baaddd80d9fac53e30ae50f985fe2"
Part 3 ETag: "1a0baaddd80d9fac53e30ae50f985fe2"
-------------
Part 4 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014132Z&X-Amz-Expires=3600&X-Amz-Signature=58a8a4b29dba9fa33cbf68474571c4b95b67ad10dc09edc201521538e5fe1221&X-Amz-SignedHeaders=host&partNumber=4&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 4 MD5: "c412ac0d867167e95376fdcbf9f564c2"
Part 4 ETag: "c412ac0d867167e95376fdcbf9f564c2"
-------------
Part 5 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014148Z&X-Amz-Expires=3600&X-Amz-Signature=48cda21875aeb01e93406ff25bbeb9369c81cf1320b8cc833892a631b0f00b08&X-Amz-SignedHeaders=host&partNumber=5&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 5 MD5: "ab92459b2e5db873b0e7b1aed8a8300c"
Part 5 ETag: "ab92459b2e5db873b0e7b1aed8a8300c"
-------------
Part 6 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014205Z&X-Amz-Expires=3600&X-Amz-Signature=e0de629600d269a8ab4e1cee709263a307300fee6ce8e00b009412635aeeee56&X-Amz-SignedHeaders=host&partNumber=6&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 6 MD5: "c533e8b1c1a4399dd678c9d0dc40e244"
Part 6 ETag: "c533e8b1c1a4399dd678c9d0dc40e244"
-------------
Part 7 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014220Z&X-Amz-Expires=3600&X-Amz-Signature=52a2f66bd5f289de44e2bb829558fd1156cea39b6e19ddf571ee75da3e4d1571&X-Amz-SignedHeaders=host&partNumber=7&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 7 MD5: "ea4c08057c8ce972aedeff71746bcfd5"
Part 7 ETag: "ea4c08057c8ce972aedeff71746bcfd5"
-------------
Part 8 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014239Z&X-Amz-Expires=3600&X-Amz-Signature=2ece1ab64f3b5c8b5b7c2483b8e59795460141f69a5c72e5f6b951a0975cdf73&X-Amz-SignedHeaders=host&partNumber=8&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 8 MD5: "0e45c2e65ed5124349ead4dc2312857f"
Part 8 ETag: "0e45c2e65ed5124349ead4dc2312857f"
-------------
Part 9 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014255Z&X-Amz-Expires=3600&X-Amz-Signature=5503a883523a68f4c73972dfdd006ea9ecf27b00bd2377903c3cee1a643d7ff2&X-Amz-SignedHeaders=host&partNumber=9&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 9 MD5: "011afd18e851afd47d2fc48c4556ffe8"
Part 9 ETag: "011afd18e851afd47d2fc48c4556ffe8"
-------------
Part 10 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014311Z&X-Amz-Expires=3600&X-Amz-Signature=8b699dd8078c3e9f4768423fe1e7716ec55e89fea429ff638f06a91e40acd2b8&X-Amz-SignedHeaders=host&partNumber=10&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 10 MD5: "f2bc2cb9559cd29b26f83701d782e117"
Part 10 ETag: "f2bc2cb9559cd29b26f83701d782e117"
-------------
Part 11 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014327Z&X-Amz-Expires=3600&X-Amz-Signature=a878891b23c870c6cac54c43396a8b9052ccaebe5ab424a8947b6dd8f10bcf88&X-Amz-SignedHeaders=host&partNumber=11&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 11 MD5: "9ff953cd3145709b92b34c433dd5821d"
Part 11 ETag: "9ff953cd3145709b92b34c433dd5821d"
-------------
Part 12 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014343Z&X-Amz-Expires=3600&X-Amz-Signature=36ae702a38258ed354b2402d2bd8f10c3796330e531a166a91f08863aaa9f044&X-Amz-SignedHeaders=host&partNumber=12&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 12 MD5: "a277222f461ef530d96ddb5a673c350f"
Part 12 ETag: "a277222f461ef530d96ddb5a673c350f"
-------------
Part 13 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014359Z&X-Amz-Expires=3600&X-Amz-Signature=f3f2d83861951a25dda9062f52f4243eecc3d323c21ce23a569686ffe9a20d6e&X-Amz-SignedHeaders=host&partNumber=13&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 13 MD5: "f5fc875dff5dca0ac6d8d4daebe12705"
Part 13 ETag: "f5fc875dff5dca0ac6d8d4daebe12705"
-------------
Part 14 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014416Z&X-Amz-Expires=3600&X-Amz-Signature=aa9f32a1bd4a0483c6b041b230ce3d53ca4ade6aa4ec9774b00f9b54bc361745&X-Amz-SignedHeaders=host&partNumber=14&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 14 MD5: "4deab7d65fc34a80ff635c80d33e108f"
Part 14 ETag: "4deab7d65fc34a80ff635c80d33e108f"
-------------
Part 15 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014434Z&X-Amz-Expires=3600&X-Amz-Signature=84651059126e5e4272f354d87fa705c40cd9050d9b68d78eb308a2577f0818ab&X-Amz-SignedHeaders=host&partNumber=15&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 15 MD5: "5af1cbeb9913e8b856b99a3e6ca0e8e9"
Part 15 ETag: "5af1cbeb9913e8b856b99a3e6ca0e8e9"
-------------
Part 16 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014451Z&X-Amz-Expires=3600&X-Amz-Signature=6eab4deb780ff48fe4e88dd45e8aa813b01529d153f982c342d2fc9f26a10258&X-Amz-SignedHeaders=host&partNumber=16&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 16 MD5: "82d942ac5f524454df62a3e668a3967b"
Part 16 ETag: "82d942ac5f524454df62a3e668a3967b"
-------------
Part 17 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014510Z&X-Amz-Expires=3600&X-Amz-Signature=df94173dd24135abb431e93364f4659a5acedbf2a93c4b2d32ee387bdc01e969&X-Amz-SignedHeaders=host&partNumber=17&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 17 MD5: "2aa82a9b688e84c77fcb7a7f37c4cb1a"
Part 17 ETag: "2aa82a9b688e84c77fcb7a7f37c4cb1a"
-------------
Part 18 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014526Z&X-Amz-Expires=3600&X-Amz-Signature=de0da4f6c3cbaba814c3f7fb3bc989cc8f648c8ef29921afb63f9482416dd7cf&X-Amz-SignedHeaders=host&partNumber=18&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 18 MD5: "abc9d1c77b3272ae799ffb062a687bc9"
Part 18 ETag: "abc9d1c77b3272ae799ffb062a687bc9"
-------------
Part 19 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014544Z&X-Amz-Expires=3600&X-Amz-Signature=64c82f4736807c28a02cc624105f591c613462eb7c46933f9278d089cd40cbd2&X-Amz-SignedHeaders=host&partNumber=19&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 19 MD5: "2a80800bcbfe3f1aa3a3ffb27a9b55b9"
Part 19 ETag: "2a80800bcbfe3f1aa3a3ffb27a9b55b9"
-------------
Part 20 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014601Z&X-Amz-Expires=3600&X-Amz-Signature=714c10558f9b8ddb5cef6e7232e8bc4b62586c6f2c79f6f513df6c36ee0051df&X-Amz-SignedHeaders=host&partNumber=20&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 20 MD5: "0f82733ccf7a2da84597ec0a1ec85c4b"
Part 20 ETag: "0f82733ccf7a2da84597ec0a1ec85c4b"
-------------
Part 21 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014617Z&X-Amz-Expires=3600&X-Amz-Signature=4e770ce27039e1cc68349b8380f30bc0f8ae6d0a735aa0ff2d0ad68a8ddfa2d6&X-Amz-SignedHeaders=host&partNumber=21&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 21 MD5: "83e8df156f7eb993e64558d76246274a"
Part 21 ETag: "83e8df156f7eb993e64558d76246274a"
-------------
Part 22 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014633Z&X-Amz-Expires=3600&X-Amz-Signature=535ede03ef32a2c329e945bb6984dbab703fde6d1c98e2e3231f94afc57403e9&X-Amz-SignedHeaders=host&partNumber=22&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 22 MD5: "229a39146e6040f3a89c1abf553bda3a"
Part 22 ETag: "229a39146e6040f3a89c1abf553bda3a"
-------------
Part 23 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014650Z&X-Amz-Expires=3600&X-Amz-Signature=72ade831afa32609e47fd04ea3da6464a0c4e9b4c8a4882c2c7339fb42451ad8&X-Amz-SignedHeaders=host&partNumber=23&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 23 MD5: "05079456308a1ab79adc8dbeccfcdfd2"
Part 23 ETag: "05079456308a1ab79adc8dbeccfcdfd2"
-------------
Part 24 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014707Z&X-Amz-Expires=3600&X-Amz-Signature=47f08e9c6d5f2616b2db9149e224a7bc7ee88fa9ed6619c38db4cc2ca3bbead1&X-Amz-SignedHeaders=host&partNumber=24&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 24 MD5: "45a5bd29544717410c9f6976cfaf4f68"
Part 24 ETag: "45a5bd29544717410c9f6976cfaf4f68"
-------------
Part 25 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014723Z&X-Amz-Expires=3600&X-Amz-Signature=6a674ee1bf57ac82f8100df6ee9075db33b35248ee9adf45b77679b88a4300c8&X-Amz-SignedHeaders=host&partNumber=25&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 25 MD5: "37403702d80317faf5e4180e4de95386"
Part 25 ETag: "37403702d80317faf5e4180e4de95386"
-------------
Part 26 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014740Z&X-Amz-Expires=3600&X-Amz-Signature=2f7a39776383360a23ca13be138c3a03ee8576ab0c91e9618cd88bc3462786f0&X-Amz-SignedHeaders=host&partNumber=26&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 26 MD5: "e278194fada294ad29ae4d3d7be4ccfd"
Part 26 ETag: "e278194fada294ad29ae4d3d7be4ccfd"
-------------
Part 27 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014757Z&X-Amz-Expires=3600&X-Amz-Signature=4d104d3a441ceed017ac59c7bdf901bc95aedb9665154e4941d16faf221575c9&X-Amz-SignedHeaders=host&partNumber=27&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 27 MD5: "519acb77f49307a8eaa2a9662c84a910"
Part 27 ETag: "519acb77f49307a8eaa2a9662c84a910"
-------------
Part 28 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014815Z&X-Amz-Expires=3600&X-Amz-Signature=4301eb1b622a2155c7ae473de32132a030133d117e66912f31f9551473ca131e&X-Amz-SignedHeaders=host&partNumber=28&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 28 MD5: "25b1ca5a2792650f04f8165955249406"
Part 28 ETag: "25b1ca5a2792650f04f8165955249406"
-------------
Part 29 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014831Z&X-Amz-Expires=3600&X-Amz-Signature=cc83ee809fc790808da7339900801f3bde3d680bb0cd9fae6a458fcb4a04d673&X-Amz-SignedHeaders=host&partNumber=29&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 29 MD5: "84cdbdd3a477467414b9ce3b5246f405"
Part 29 ETag: "84cdbdd3a477467414b9ce3b5246f405"
-------------
Part 30 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014847Z&X-Amz-Expires=3600&X-Amz-Signature=260c7d12a4e42b9fd3f2ea86c4043a8f14037ff0668bcba0b7c3a4ac7566d811&X-Amz-SignedHeaders=host&partNumber=30&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10485760 bytes...
Part 30 MD5: "33b9432858767a946cd0f101812d772e"
Part 30 ETag: "33b9432858767a946cd0f101812d772e"
-------------
Part 31 URL: "https://test-bucket.s3.us-west-1.amazonaws.com/uploads/large-file.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XKIZWLZLEPG4SYDHVNVE%2F20200402%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200402T014904Z&X-Amz-Expires=3600&X-Amz-Signature=b23ce6110578432393a5a1b2136587a81225c1d999cf2bd8692d3ed5ad93ba2a&X-Amz-SignedHeaders=host&partNumber=31&uploadId=DaixYpccvyVqdKHFaSTCn6g_IwtfS4VofbD1orpPPCCFmgA4RvA7qy0HDoIxZZl0wwGDOlFggccUoYCHgfgozNCG0fBM1_89ZTIYqZgbrdyeFEeLpHy17qw8b1wqXLIC"
Sending 10039102 bytes...
Part 31 MD5: "f3b6e610ee0ff0e7b35b0532ec059b72"
Part 31 ETag: "f3b6e610ee0ff0e7b35b0532ec059b72"
-------------
Part 31/31 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% | bytes: 10039102
Part 26/31 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% | bytes: 10485760
Part 29/31 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% | bytes: 10485760
Part 28/31 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% | bytes: 10485760
Part 22/31 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% | bytes: 10485760
-------------
My ETag: "068b95e4fbc2ac3ab46bd2d0fb30e6c4-31"
S3 ETag: "068b95e4fbc2ac3ab46bd2d0fb30e6c4-31"