Wasabi
Verified against the provider's documentation, not against a live account.
A provider snapshot disappears with the account that holds it; a dump in a bucket you control is the copy that survives, and Verestore proves it restores.
1. Write dumps to Wasabi
Use the regional endpoint https://s3.<region>.wasabisys.com, for example https://s3.eu-central-1.wasabisys.com. With a separate read-write key for your backup job:
pg_dump --format=custom --no-owner "$DATABASE_URL" \
| aws --endpoint-url https://s3.eu-central-1.wasabisys.com --region eu-central-1 \
s3 cp - "s3://acme-backups/orders/orders-$(date -u +%Y-%m-%dT%H-%M).dump"
If a recent AWS CLI rejects the upload with a checksum or header error, set AWS_REQUEST_CHECKSUM_CALCULATION=when_required for the backup job.
Verestore accepts pg_dump custom format (-Fc) or plain SQL, optionally gzipped. The format is detected from the content, not the file extension.
2. Create a read-only policy
Wasabi supports AWS-compatible IAM policies. In the Wasabi console, create a policy named verestore-read with:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListOnlyThePrefix",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::acme-backups",
"Condition": { "StringLike": { "s3:prefix": ["orders/*"] } }
},
{
"Sid": "ReadOnlyThePrefix",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::acme-backups/orders/*"
}
]
}
3. Create a sub-user for Verestore
- Create a user named
verestore-readerwith programmatic (API key) access only, no console access. - Attach the
verestore-readpolicy and no other policy or group. - Create an access key for the user and copy the access key and secret key. The secret is shown once.
Verestore only lists objects under the prefix (ListObjectsV2) and reads orders/*, pinned to the listed ETag. It never writes or deletes.
4. Add the target in Verestore
- S3 endpoint:
https://s3.eu-central-1.wasabisys.com(your bucket's region, in thes3.<region>form) - Region:
eu-central-1(or leave it empty: it is filled from the endpoint) - Bucket:
acme-backups - Prefix:
orders/ - Access key ID and secret access key: from the sub-user's key