Signature errors
This page helps when Zata answers 403 SignatureDoesNotMatch: the signature your tool sent does not match the one Zata calculates from the same request. It also covers presigned links that return 403.
On AWS these errors often mean a wrong region. Zata does not check the region name, so the region setting never causes a signature error here. Keep it at us-east-1 and look at the causes below.
Quick fixes
The secret key is wrong
A wrong access key ID gives InvalidAccessKeyId. A wrong secret key gives exactly SignatureDoesNotMatch. Usually a character is missing, or a space or line break was pasted with the key.
-
Check which keys the tool really uses. The AWS CLI shows the last four characters of each key and where it found them (environment variable, credentials file or config file):
Compare the access key with the list on Access Keys in the Zata console.
-
Enter the secret key again. Copy it from the key file you downloaded when you created the key — the console does not show a secret key again. If you no longer have the file, rotate the key or create a new one (see Access keys).
AWS CLIrclone -
Test the keys with the AWS CLI (set it up if you have not):
If the AWS CLI works with the same keys, the keys are right and the other tool’s settings are the problem.
If a forgotten AWS_SECRET_ACCESS_KEY environment variable is set, it overrides the profile. See Clock and credentials to find out which keys a tool picks up.
rclone and Go apps
Something between your tool and Zata changes the Accept-Encoding header. Tools that include this header in the signature fail on every request with SignatureDoesNotMatch. Python tools (boto3, s3cmd) and the AWS CLI are not affected.
rclone v1.66 and newer — turn off signing of that header. Also set no_check_bucket, which sub-user keys need:
The remote in rclone.conf then contains:
Older rclone versions (such as v1.53 from Ubuntu’s apt) do not have this setting and are not affected. Apps built on rclone, such as S3 Drive, need the same two settings. Full setup: rclone on Linux, rclone on Windows, rclone GUI.
AWS SDK for Go v2 — remove the header before the request is signed. Add this middleware to the client options:
The complete client, with imports and the checksum settings, is on the Go page.
Velero currently fails with SignatureDoesNotMatch on Zata for this reason, and no setting in Velero fixes it.
A proxy changes the request
The signature covers the host name, the path, the query string, the signed headers and the body. A proxy, TLS-inspection appliance or reverse proxy that changes any of them — for example by decoding %20 or merging // in the path — breaks the signature.
Run the same command once with the proxy bypassed for Zata. Enter host names, not URLs:
Linux / macOS
Windows (PowerShell)
If it works now, ask your network team to pass Zata traffic through unchanged. More network checks are on Network and certificates.
Special characters in file names
Zata accepts object names with spaces, +, &, ; and non-English (Unicode) characters. If only such names fail, upload the same name with the AWS CLI:
If this works, the problem is in how your tool encodes the name. Update the tool, or report it to its vendor.
s3cmd
In ~/.s3cfg, host_bucket must be the plain host name. A value with a bucket placeholder such as idr01.zata.ai/%(bucket)s fails with SignatureDoesNotMatch:
For Mumbai, use bom01.zata.ai in both lines. See s3cmd.
Presigned upload links
A presigned upload (PUT) link is signed for one exact request:
-
If the link was created with a
ContentType, the upload must send exactly thatContent-Typeheader, or Zata answers 403: -
If the link was created without a
ContentType, send noContent-Typeheader. Some HTTP libraries add one on their own, which also gives 403. -
A link stops working when it expires, or when the key that signed it is deleted or deactivated.
To share a file without code, use the console: see Share a file.
See the real error
Zata’s error responses contain an error code but no message text, so look for the code. The debug output contains your access key ID — remove it before you share the output with anyone.
To print only the error code from the AWS CLI:
Still stuck?
Contact Zata support (see Get support) and include:
- the tool and its version (
aws --version,rclone version,s3fs --version) - the endpoint you use and the region of the bucket (Indore or Mumbai)
- the exact error code, and the
RequestIdfrom the error response - the debug output from above, with access keys removed
Zata support can check the server logs for your request.