Multipart presigned url 'signature not matching' message

Hi there,

For larger files I use the following multipart upload sequence:

  1. Instantiate a multipart upload session on my server by contacting Tigris
  2. Generate a series of presigned PUT urls with the aquired uploadId and partNumber
  3. Use the presigned urls in my client to upload the file in parts
  4. Complete the session on the server with the corresponding uploadId en ETags

However, I’m stuck in step 2:

Using the generated multipart presigned url

https://fly.storage.tigris.dev/test.sessions.pinggg.cloud/VpfJdEMNek7Deo30UehQB3LTfVnpPCyYgbaTsM7ee1jU/shares/1.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=tid_mNpmYFuMLHfstgsbJEnjDXQLjRSgqXlznLCJdlY_ZIhereWHco%2F20250110%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250110T150748Z&X-Amz-Expires=15&X-Amz-SignedHeaders=host&partNumber=3&uploadId=33f9ef79-4d96-971e-5ef1-47ba429803f2&X-Amz-Signature=ff1fdc841207d84f6bb34cbe7018e0d552b6142ef64fdfd46b973bb156e454a4

Tigris returns:

<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<Resource>/test.sessions.pinggg.cloud/VpfJdEMNek7Deo30UehQB3LTfVnpPCyYgbaTsM7ee1jU/shares/1.pdf</Resource>
<RequestId>1736521675364427029</RequestId>
<Key>VpfJdEMNek7Deo30UehQB3LTfVnpPCyYgbaTsM7ee1jU/shares/1.pdf</Key>
<BucketName>test.sessions.pinggg.cloud</BucketName>
</Error>

I don’t understand what I’m doing wrong here. The signature logic (without the uploadId and partNumber) works perfectly for single presigned uploads. The only difference is that the multipart version includes uploadId and partNumber…

Is Tigris expecting a different structure for multipart presigned urls?

1 Like

Hi @hakoptak I will take a look at it and provide an update in the beginning of the next week.

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.