S3
type: s3 — upload to AWS S3 or any S3-compatible service (MinIO, Wasabi, Backblaze B2 with S3 API, Cloudflare R2, etc.).
Prerequisites
- No external binaries required — snapr uses the AWS SDK directly.
- Credentials need
s3:PutObject,s3:ListBucket,s3:DeleteObject(for retention), ands3:GetObject(for the UI download feature).
Fields
Example — AWS
Example — MinIO
Download mode
By default snapr proxies download responses through its HTTP server. Set downloadMode: signed to have the API return a presigned S3 GET URL — the browser then fetches directly from S3 without going through snapr.
When to use signed:
- snapr runs on a small instance and would saturate its bandwidth proxying large archives.
- The client and the S3 endpoint share a faster network path than client → snapr → S3.
- You want CDN-style edge delivery (works with S3 Transfer Acceleration / CloudFront origins).
Trade-offs:
- Each signed URL contains short-lived auth in query params. Shorten
signedUrlTTL(≥ 60 s) if URLs may end up in proxy/access logs. - The browser must reach the S3 endpoint directly. For private MinIO setups make sure the endpoint hostname is resolvable from the user's network and CORS is configured on the bucket.
- For split snapshots, per-part download still works (each part is its own redirect) but the "Download full archive" option is hidden in the UI — one HTTP redirect cannot represent N parts. Use
downloadMode: proxyif full-archive streaming matters.
signed is only valid for type: s3. The config validator rejects it on other backends.
Notes
- For non-AWS providers, set
endpointto the service URL — path-style addressing is enabled automatically. storageClassis forwarded as thex-amz-storage-classheader. Providers that don't recognise the value will fall back to their default.