AWS S3
Use your own AWS S3 bucket—or any S3-compatible storage such as Cloudflare R2 or MinIO—as the destination for rendered images and template thumbnails. Keep assets in infrastructure you control and serve them from your own domain.
What you can do
- Upload rendered images and thumbnails to your bucket.
- Serve assets from a custom CDN domain.
- Point at S3-compatible providers (R2, MinIO) via a custom endpoint.
Prerequisites
- An AWS account with an S3 bucket (or an S3-compatible bucket).
- IAM credentials (Access Key ID + Secret Access Key) with write access to the bucket.
- The bucket's region.
Connect AWS S3
- In Bannx, open Settings → Space → Integrations.
- Find AWS S3 and click Connect.
- Fill in the fields below and save.
| Field | Required | Description |
|---|---|---|
| Access Key ID | Yes | IAM access key, e.g. AKIA… |
| Secret Access Key | Yes | Secret for the access key |
| Region | Yes | Bucket region, e.g. us-east-1 |
| Bucket | Yes | Target bucket name |
| CDN URL | No | Serve files from a custom domain, e.g. https://cdn.example.com |
| Endpoint | No | Custom endpoint for S3-compatible providers (R2, MinIO) |
S3-compatible providers
For Cloudflare R2, MinIO, or similar, set the Endpoint to the provider's S3 API URL (for example https://<account>.r2.cloudflarestorage.com) and keep the bucket and credentials for that provider.
Recommended IAM policy
Grant the minimum permissions needed to write and read objects in the target bucket:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject"],
"Resource": "arn:aws:s3:::YOUR_BUCKET/*"
}
]
}
Notes
- CORS: If assets are loaded by the browser from your CDN/bucket, allow your app origin in the bucket's CORS configuration.
- Caching: Bannx uploads objects with a long, immutable
Cache-Control(object keys are unique), so a CDN in front of the bucket can cache them aggressively. - Security: Credentials are stored against your space and used only server-side.