Troubleshoot Object Storage
Fix refused S3 requests, bucket names that are not accepted, missing keys, charges you did not expect and other common Object Storage problems.
Find the symptom or the message you see, then follow the fix. Messages appear here exactly as the dashboard, the API or your S3 client shows them, and each fix links to the page that covers the task in full.
A new key is refused
Section titled A new key is refused- Cause
- A new key takes up to a couple of minutes to reach storage in every region. Until then, storage refuses requests signed with it, usually with
InvalidAccessKeyId. - Fix
- Wait a couple of minutes and try again. If the key is still refused, check that the client has the whole access key ID, which starts with
AKIAand is 24 characters long. Check too that the client sends requests to our endpoint: a client with no endpoint sends them to Amazon, which does not know the key. With the AWS CLI, add--debugto a command and look fors3.fra.coritan.com:7337in the request URL (Connect an S3 client).
A key that worked is refused
Section titled A key that worked is refused- Cause
- Storage answers
InvalidAccessKeyIdwhen it no longer accepts a key. That happens when you revoke the key, when the key's service is suspended or has ended, and when the key was limited to a bucket that you deleted. Each of these turns the key off within a couple of minutes. Temporary credentials are refused the same way once they expire, or when the request leaves out the session token. - Fix
- Open the service's Access keys tab. A revoked key is no longer in the list, and a key that is turned off shows Inactive. For a suspended service, pay the overdue invoice (Failed payments and suspended services), and its keys work again within a couple of minutes of the service becoming active. In the other cases, create a new key and give it to the client. For temporary credentials, create new ones (Create temporary credentials).
Requests fail with a signature error
Section titled Requests fail with a signature error- Cause
- Storage answers
SignatureDoesNotMatchwhen the signature it computes differs from the one the client sent. The secret key is wrong, or only part of it was copied. The same error appears when the client sends the request to an address other than the endpoint, such as an IP address, or through a proxy that changes theHostheader. Storage checks the signature against the endpoint's host and port. - Fix
- Paste the secret key again from where you saved it, with no space or line break around it. Use the endpoint exactly as the dashboard gives it, such as
https://s3.fra.coritan.com:7337, and send requests to it directly. If you lost the secret key, create a new key, because we cannot show a secret key again.
Requests are refused with access denied
Section titled Requests are refused with access denied- Cause
- Storage answers
AccessDeniedwhen the key's permissions or scope do not cover the request. A read-only key cannot upload or delete, a key limited to one bucket cannot reach another, and no key can create or delete a bucket. That is why storage refusesaws s3 mbandaws s3 rb, and rclone when it tries to create the bucket before an upload. Storage also refuses a request with no signature, such as a bucket's address opened in a web browser. - Fix
- Check the key's Scope and Permissions on the Access keys tab. To upload or delete, use a key with Read and write. For another bucket, use a key limited to that bucket, or one whose scope is All buckets. Create and delete buckets on the Buckets tab (Create and delete buckets). With rclone, set
no_check_bucket = truein the remote (rclone). To share an object with someone who has no key, send a presigned URL. To let anyone read a bucket without a key, turn on its public URL (Serve a bucket publicly).
A setting cannot be changed with an S3 client
Section titled A setting cannot be changed with an S3 client- Cause
- Storage answers
403AccessDeniedwithChange this setting in the dashboard or the Object Storage API.when a request signed with an access key tries to change a bucket or object setting, such as versioning, CORS, lifecycle rules, retention or a legal hold. No key can change them. - Fix
- Change the setting on the bucket's page in the dashboard, or through the API (Bucket settings). Reading a setting works with any key whose scope covers the bucket, except encryption, which no key can read.
A bucket is not found
Section titled A bucket is not found- Cause
- Storage answers
NoSuchBucketwhen the endpoint has no bucket with that name. The bucket lives in another region, the name lacks your prefix, or the bucket was deleted. - Fix
- On the Buckets tab, find the bucket's full name and its Region. Send requests to that region's endpoint, which the Endpoints card on the Overview tab lists, and use the full name, such as
u7-assets. A bucket that none of your services lists was deleted, together with its objects.
The client cannot find the host or reports a certificate error
Section titled The client cannot find the host or reports a certificate error- Cause
- The client uses virtual-hosted style, which puts the bucket name in the host, such as
u7-assets.s3.fra.coritan.com. A region answers those hosts only where the dashboard offers them. A certificate error for the endpoint's own host, such ass3.fra.coritan.com, means the endpoint has no port while the Endpoints card shows one, so the client connects to port 443, which does not serve that region. - Fix
- Turn on path style, as each setup in Connect an S3 client does, and give the endpoint exactly as the Endpoints card shows it,
:7337included when it has one.
The connection times out
Section titled The connection times out- Cause
- Something between your client and us blocks outgoing connections to the endpoint's port, such as a firewall, a proxy or a VPN. Port 7337 answers in every region, and port 443 only where the Endpoints card shows an endpoint with no port.
- Fix
- Run
curl -I https://s3.fra.coritan.com:7337on the same machine. Any HTTP status in the answer, even403, means your network reaches us, so check the endpoint in the client. No answer means the port is blocked: allow outgoing HTTPS on TCP port 7337, or ask whoever runs the network to allow it. Where the card shows an endpoint with no port, try that endpoint.
A request signed for the wrong port is refused
Section titled A request signed for the wrong port is refused- Cause
- The signature names the endpoint with a port that the request did not use: a request signed for
s3.fra.coritan.com:7337and sent to port 443, or the other way round. A presigned URL works at the address it was made for. - Fix
- Give the client the endpoint you connect to, exactly as the Endpoints card shows it, and create the presigned URL again after the endpoint changes.
Every request fails with status 400
Section titled Every request fails with status 400- Cause
- The client sends plain HTTP. Port 7337 accepts HTTPS only, and it answers a plain HTTP request with
400 Bad Request. - Fix
- Start the endpoint with
https://. In s3cmd, setuse_https = Truein~/.s3cfg, or pass--ssl.
A presigned URL stops working
Section titled A presigned URL stops working- Cause
- Storage answers
403for a link that has expired. A link from the API lasts 15 minutes unless you asked for longer, and 1 hour at most. A link that an S3 client signed with your key also stops working when you revoke the key. Each link works only with the method it was signed for, and an upload link signed with a content type needs the sameContent-Typeheader on the upload. - Fix
- Create a new link (Share a file with a presigned URL). Send the request with the
methodthe API returned and every header inheaders. For a file that someone needs for longer, send a new link each time, or give them a read-only key limited to the bucket.
A public URL or custom domain answers 404
Section titled A public URL or custom domain answers 404- Cause
- The object's key is wrong, the bucket is not a website and the address names no key, or the public URL is off. A suspended service, or a bucket our staff turned off, answers
404too. - Fix
- Check the key, including its case and any folder in front of it. Serve a bucket publicly lists each case.
A custom domain stays Not verified
Section titled A custom domain stays Not verified- Cause
- The domain's TXT or CNAME record is missing or wrong. The domain's row says which.
- Fix
- Publish the records the row shows where the domain's DNS is hosted, then select Check domain on the domain's row (Serve a bucket on your own domain).
Visitors get an old copy of an object
Section titled Visitors get an old copy of an object- Cause
- We keep a copy of each object of 10 MB or less for up to an hour, or for as long as the object's
Cache-Controlallows, up to a day. - Fix
- Purge the cache on the bucket's Public access tab (The cache).
A bucket name is refused
Section titled A bucket name is refused- Cause
- The name breaks a naming rule, or your account already uses it. The message under Name says which rule, such as
Dots and hyphens cannot be next to each other.The messageA bucket named u7-assets already existsmeans one of your services has a bucket with that name.u7-assets was deleted recently and is still being removed. Pick another name, or wait for the removal to finish.means you deleted a bucket with that name in the last 7 days. - Fix
- Change the name to follow Bucket names, or choose another one. The name of a deleted bucket is free again 7 days after the delete.
You cannot create another bucket
Section titled You cannot create another bucket- Cause
- The service holds 25 buckets, the most one service may hold. Create bucket… is greyed out, the Create a bucket page says
This service is at its bucket limit, and the API answers409withThis service already has 25 buckets, which is the most one service may hold. - Fix
- Delete a bucket you no longer need (Delete a bucket). It stops counting as soon as you delete it. You can also order another service, which holds up to 25 buckets of its own.
A region is not available
Section titled A region is not available- Cause
- No region can take a bucket at the moment, or the region you chose has stopped taking them. The order page says
No region offers Object Storage right now, and the create bucket page saysNo region is available right now. Creating a bucket in a region that has stopped taking them fails withThat region does not offer object storage. An order for such a region fails during setup with the same message, and the service's status becomesfailed. - Fix
- Choose another region if the list offers one. Otherwise, try again later. For a service whose status is
failed, contact support with its service ID.
A bucket will not delete
Section titled A bucket will not delete- Cause
- The bucket holds objects that the last hourly measurement did not count, so the dialog offered no box to destroy them. We refuse the delete with
u7-assets is not empty. Delete it with force to destroy its contents as well. - Fix
- Wait for the next measurement and delete the bucket again with the box ticked. You can also delete the objects first (Delete objects and folders), or delete the bucket through the API with
force=true(Delete a bucket through the API).
A bucket with versions or Object Lock will not delete
Section titled A bucket with versions or Object Lock will not delete- Cause
- On a bucket that keeps versions, older versions and delete markers count as contents, even when no current object is left. We refuse the delete with
u7-assets still holds object versions. Delete it with force to destroy every version as well.On a bucket with Object Lock, we refuse while any version is under retention or has a legal hold, with a message such asu7-backups holds 3 locked versions, so it cannot be deleted yet. - Fix
- For versions, tick
Destroy any older versions and delete markers in itin the dialog, or addforce=truethrough the API. For locked versions, wait for the last retention to end and take off every legal hold first (Delete a bucket with Object Lock).
Buttons to create or change things are missing
Section titled Buttons to create or change things are missing- Cause
- The service is not
active. The banner above the tabs says why: Waiting for payment, Setting up or Suspended. Until the service is active, the dashboard hides Create bucket…, Delete bucket…, Create key…, Upload… and New folder…. You can still browse buckets, download objects and revoke keys. - Fix
- For Waiting for payment, select Open invoices and pay the first invoice. Setting up takes under a minute, so reload the page. For Suspended, pay the overdue invoice (Failed payments and suspended services).
Uploads in the dashboard fail
Section titled Uploads in the dashboard fail- Cause
- Your browser sends each upload straight to the region's endpoint. The message after
Could not uploadand the file's name says what went wrong.Could not reach the storage endpointmeans your browser could not connect, usually because a firewall, proxy or VPN blocks the port.The upload link expired or was refusedmeans storage answered403.Upload failedwith a number means storage answered with that HTTP status. - Fix
- For
Could not reach the storage endpoint, try another network, or ask whoever runs yours to allow outgoing HTTPS on the port of the region's endpoint, 7337 unless the endpoint has no port. For the other two, reload the page and upload the file again. Send a large file with an S3 client, which uploads it in parts (Connect an S3 client).
A browser says a request was blocked by CORS policy
Section titled A browser says a request was blocked by CORS policy- Cause
- A page on your website sent a request to the bucket, and no CORS rule matched the page's origin, the method or a header the page sent. Once a bucket has CORS rules, browsers block what they do not allow. A public URL or custom domain answers no other website until the bucket has a rule that allows it.
- Fix
- Add or correct a rule on the CORS card of the bucket's Settings tab. List the page's exact origin, scheme and port included (How the bucket answers browsers).
Objects stay after their lifecycle day
Section titled Objects stay after their lifecycle day- Cause
- Lifecycle rules run once a day, so an object can stay up to a day past its time. A run checks at most 100,000 objects in a bucket and the next run carries on, so in a large bucket objects can stay longer. Until it goes, an object is listed, readable and billed.
- Fix
- Wait for the next run, and read Recent runs on the bucket's Lifecycle tab. Check that the rule is not Off and that its prefix and tags match the object exactly (How rules run).
A folder is still there after you deleted its objects
Section titled A folder is still there after you deleted its objects- Cause
- The folder has an empty folder object, whose key ends in
/. New folder… writes one, and so do some S3 clients. - Fix
- Delete the folder itself with Delete folder… in its menu, or tick it and delete it (Delete objects and folders).
Sizes and object counts do not change
Section titled Sizes and object counts do not change- Cause
- We measure each bucket once an hour. The object count and size on the Buckets tab, in the object browser's header and on the Overview tab come from the last measurement.
- Fix
- Wait for the next measurement. The Measured column on the Buckets tab says when we last measured each bucket. The list of objects comes straight from storage, and the refresh button beside the bucket's name lists the folder again.
The usage chart is empty
Section titled The usage chart is empty- Cause
No measurements yetmeans we have not measured any of the service's buckets in the window you chose. A new service or bucket waits up to an hour for its first measurement, and a service with no buckets has nothing to measure.- Fix
- Create a bucket if the service has none, and look again after the next hourly measurement.
This month costs more than you expected
Section titled This month costs more than you expected- Cause
- Requests cost money as well as storage, once the month's free amounts run out. Some tools make more requests than their work suggests. A sync with
rclone syncoraws s3 synclists the bucket each time it runs, and each page of up to 1,000 objects in the list is a Class A operation. A large file sent in parts makes a Class A operation for each part. Uploads and downloads in the dashboard count too. The free amounts are your account's, so every pay as you go service on it draws on the same ones (Which requests count). - Fix
- On the service's Overview tab, the Requests chart shows the days with the most operations, and the This month card shows which meter grew. Download the month's use from the Billing tab to see which bucket made them (Download a month's usage). Run sync jobs less often or on a narrower prefix, and delete objects you no longer need. To hear about it sooner next time, set a budget.
An object you deleted is still billed
Section titled An object you deleted is still billed- Cause
- The bucket keeps versions. A delete adds a delete marker, and the data stays as an older version, which counts as stored data until you delete it for good. The Size column on the Buckets tab counts every version.
- Fix
- Turn on Show versions in the object list and delete the versions you no longer need, or add a lifecycle rule with Delete old versions (Versions and your bill).
This month's figures leave out the last few hours
Section titled This month's figures leave out the last few hours- Cause
- We rate each hour's use two to three hours after the hour ends. Estimated so far, the This month card and the table on the Billing tab count only the hours we have rated. Through the API,
rated_throughis the end of the last rated hour. - Fix
- Nothing is wrong. Look again later: we add each hour as we rate it, and the invoice counts every rated hour (The month so far).
A budget alert arrived
Section titled A budget alert arrived- Cause
- This month's charges on the service reached 50%, 80% or 100% of its budget. We email the account's owner and its team members with the Billing or Admin role, once a month for each of those. We check every hour, so when the charges passed more than one of them within an hour, only the alert for the highest comes. The service goes on working, and we bill what it uses.
- Fix
- Open the service's Overview tab to see which meter grew, and the Requests chart to see when. Delete what you no longer need, or make fewer requests, as This month costs more than you expected describes. To change when the alerts come, save a new amount under Budget on the Billing tab, or select Remove budget to stop them (Set a budget). A new amount starts its alerts over, so charges already past 50% of it send an alert at the next hourly check (Budgets).
An invoice line you do not recognise
Section titled An invoice line you do not recognise- Cause
- A pay as you go service's renewal invoice has a line for each meter it billed, such as
Object Storage Class A operations: u7 photos, 2.3456 million operations, 8 Oct to 7 Nov 2026. The line names the meter and the service, then the quantity billed after the free amounts, then the dates the use falls in. The service itself costs $0, so its renewal shows no other charge for it. - Fix
- Download the use for each calendar month the dates cover, and add up the column for that meter:
gb_months,class_aorclass_b. Take away each month's free amounts to reach the billed quantity, then multiply by the rate on the service's Billing tab (When you are billed). The free amounts follow calendar months and the invoice follows the renewal date, so one invoice can cover the end of one month and the start of the next.
The button that created free storage is gone
Section titled The button that created free storage is gone- Cause
- Object Storage is pay as you go, and your account plan's free storage applies to every service you order. The dashboard no longer creates a separate free service.
- Fix
- Order Object Storage, which costs nothing (Order Object Storage). A service the dashboard created from your plan before goes on working, billed the same way (Storage from your account plan).
An Extra Object Storage 250 GB add-on is still billed
Section titled An Extra Object Storage 250 GB add-on is still billed- Cause
- The add-on is no longer sold, and one you already have renews at its price. It adds 250 GB-month to your free storage each month.
- Fix
- To pay only for what you use, remove it (Remove an add-on). 250 GB-month at the storage rate costs less than the add-on (The storage add-on).
Last used always says Never
Section titled Last used always says Never- Cause
- We do not record when a key is used. The Last used column on the Access keys tab always shows
Never, and the API always returnslast_used_atasnull. - Fix
- Nothing is wrong with the key. To keep track of where each key is used, give it a label that names the place, such as
ci deploy.
You lost a secret key
Section titled You lost a secret key- Cause
- The dashboard and the API show a secret key only once, when you create the key.
- Fix
- Create a new key, move your applications to it, then revoke the old key (Create and revoke access keys).
The bucket you named in the order is missing
Section titled The bucket you named in the order is missing- Cause
- We could not create it, or your account already had a bucket with that name, or had one that you deleted in the last 7 days. When we could not create it, the setup line in the Activity table on the Billing tab ends with
The first bucket was not created:and a reason. When the name was taken, the line does not mention the bucket. - Fix
- Create the bucket on the Buckets tab, with another name if the name is taken (Create a bucket).
Event notifications do not arrive
Section titled Event notifications do not arrive- Cause
- A rule sends nothing while it is paused, for keys its prefix and suffix leave out, and for changes made before you added it or turned it back on. We pause a rule whose every delivery failed for a day.
- Fix
- Open the bucket's Notifications tab and read the rule's Status and the Delivery log, where Response shows what your address answered (Retries and pausing).
A migration says the source did not accept the key
Section titled A migration says the source did not accept the key- Cause
- The other provider refused the access key ID or the secret, such as with
The source did not accept the access key ID. A key with a session token does not work. - Fix
- Copy the access key ID and the secret again from the other provider, and check that the key can list and read the bucket. Create a long-lived access key if yours has a session token. Troubleshooting lists every message.
An upload that asks for AES256 answers 500
Section titled An upload that asks for AES256 answers 500- Cause
- Your tool sends
x-amz-server-side-encryption: AES256(aws s3 cp --sse AES256does). We accept it once default encryption is available, and it can answer500InternalErroruntil then. - Fix
- Remove the setting from the tool and upload again, or wait until the Default encryption card in a bucket's Settings tab reads On or Off (Encrypt the objects in a bucket).
Errors from the API
Section titled Errors from the API400An object key is requiredorObject keys are at most 1024 bytes- The presign request has no key, a key that ends in
/withgetordelete, or a key longer than 1024 bytes (Presign an object). 400A version can only be downloaded- The presign request has a
version_idwithputordelete. Onlygettakes one. 404Object storage service not found- The service ID is not an Object Storage service on your account. List your services with
GET /api/v1/client/object-storage/services(Object Storage). 404Bucket not found- The bucket ID is not a bucket of this service, or you deleted the bucket. Take the
idfrom List buckets. 404Access key not found- The key ID is not a key of this service, or you revoked the key.
409This service is pending; it can be changed once it is active- The service is not
active, and the message names its status. See Buttons to create or change things are missing. 422- A value in the request breaks a rule, and
detailsays which one, such asBucket names cannot have a dot next to another dot or a hyphen. Object Storage limits lists every rule. 429Too many requests for this action. Try again later.from a budget route- Your account set or removed budgets 30 times in the last hour, from the dashboard or the API. Wait the seconds that the
Retry-Afterheader gives, then send the request again (Set or remove a budget). 429with"error": "rate_limited"from a bucket's settings or rules- Your account reached the hourly limit for that kind of change, which Object Storage limits lists. Wait the seconds that the
Retry-Afterheader gives, then send the request again. 502with a message that startsGateway refused,Could not list,Could not sign the requestorCould not delete objects- The region's storage refused or failed the request. Try again in a minute. If it keeps happening, contact support with the whole message.
503Object storage is not enabled on this platform- Storage in the bucket's region cannot take requests right now. Try again later, and contact support if it lasts.
Errors explains the shape of every error response.
None of these match
Section titled None of these matchContact support and include:
- The Service ID from the service's Billing tab.
- The bucket's name and region.
- The access key ID of the key involved. Never send a secret key, to us or to anyone else.
- The endpoint your client uses, and the client's name and version.
- The whole error message, and when it happened.