Hello,
I’m currently facing an issue with Weaviate while attempting to perform a backup to an S3 bucket. I receive the following error code when attempting to create a backup to an s3 bucket: “Unexpected status code: 422, with response body: {‘error’: [{‘message’: 'no backup backend “s3”: backup: s3 not found, did you enable the right module?”.
This is despite including ‘ENABLE_MODULES=backup-s3’ & ‘BACKUP_S3_BUCKET=bucket_name’ in my .env and docker-compose.yml config.
Ok, so you don’t have it enabled. You need to update your ENABLE_MODULES and add backup-s3 module env setting in your environment, where you have your Weaviate deployed, this will resolve your problem then.
.env:
ENABLE_MODULES=backup-s3
docker yaml:
environment:
ENABLE_MODULES: backup-s3
However I still receive 422 error. I am using weaviate-client==3.21.0
Can you post the full docker-compose.yaml (or alternatively Helm values.yaml)? There must be a mistake in there somewhere. It seems ENABLE_MODULES is not correctly propagated to the server.
I still have some questions though, that I did not find in the documentation:
You said the backups happend daily, how long are backups saved? How to access a backup from 30 days ago?
When doing an adhoc backup, will it expire at some point? Are there extra costs associated with making multiple backups?
Reason I am asking this is because we update our weaviate collection automatically when customers upload their documents. It can happen that they fail, something goes awry, so the idea is to make a backup before something goes wrong, so its easy to restore later. It could be as much as 10 extra backups per day. Should something else be used?
There are no extra costs, but there may be a limit on number of adhoc backups. All backups will follow the the retention as per the backup policy.
If you want to make sure the ingestion is working as expected, you can, if possible, define deterministic ids and use the batch ingestion. This way, if you run the batch import again, and pass a predefined uuid, Weaviate will update or insert that object.
Additionally, you can also find here a recipe for ingestion with a retry logic: