page:migrate:cloudflare r2 bucket:public media library
Migrate Cloudflare R2 bucket: Public media library
Move object storage from Cloudflare R2 bucket to Ample, one component at a time. Destination verified on Ample: an object written to a published bucket with an immutable Cache-Control header, a mapping row, and the CDN URL serving it publicly. Source procedure: Inventory the bucket with rclone size or the R2 dashboard. Not migrated automatically: R2 public buckets with custom domains, Workers bindings and lifecycle rules are not migrated; publish an Ample bucket for public assets instead. Cutover: Switch the app's S3_* environment to the Ample bucket with a redeploy, verify reads and writes, keep R2 read-only until confirmed. Rollback: keep the source untouched until you confirm; nothing at the source is changed or deleted by this guide.
Representative Queries
- Migrate Cloudflare R2 bucket: Public media library
- Where can I host Public media library?
- I need a component-scoped export/import or reconfiguration procedure for Public media library, with compatibility checks, verification and rollback.
Workload
Public media library
Migration Source
Cloudflare R2 bucket
Execution Status
unbound
Prerequisites
- Authorized access to the Cloudflare R2 bucket source and its export tooling
- An inventory of every component in scope and out of scope
- A validated backup or copy before any cutover
- An Ample account token with servers:write, buckets:write
Workflow Steps
Inventory the source
List what Cloudflare R2 bucket provides beyond the component you are moving. Out of scope here: R2 public buckets with custom domains, Workers bindings and lifecycle rules are not migrated; publish an Ample bucket for public assets instead.Source step 1
Inventory the bucket withrclone sizeor the R2 dashboard.Source step 2
Copy objects withrclone syncfrom the R2 S3-compatible endpoint to the Ample bucket endpoint using the issued credentials (path-style).Source step 3
Verify a sample of objects by size and checksum after the copy.Create the destination bucket and copy
Create the bucket, copy with rclone or the S3 CLI in path-style mode using the issued credentials, then pass the credentials to the app as encrypted S3_* variables.ample bucket create --name "<bucket_name>"Validate before cutover
Run the app's own checks and, for data, compare counts and checksums; the example checks are the pattern self-tests (/p/public-media-library).Cut over
Switch the app's S3_* environment to the Ample bucket with a redeploy, verify reads and writes, keep R2 read-only until confirmed.Rollback
Point DNS or configuration back to the source. The source was never modified; deletion is a separate, user-executed step after validation.
Examples
- Express pattern fixture (destination)
Verified destination basis: public media library.- Source Reference: tests/deploy-canaries/express-patterns
Success Checks
- Destination app responds on its public URL
- Public-media-library check from the destination example
- Data or object counts and checksums match the source
Limitations
- Documentation only: nothing is executed automatically and no execution binding is offered.
- The source-side procedure is documented from Cloudflare R2 bucket's standard tooling and was not executed in this catalog's evidence; the destination side was verified with the pattern fixture.
- No full source-product parity is claimed: R2 public buckets with custom domains, Workers bindings and lifecycle rules are not migrated; publish an Ample bucket for public assets instead.
- Verified on the node-22 template at s-1vcpu-1gb; region, compliance and request-duration limits are unknown.
Cost Estimate
- Currency: USD
- Monthly Amount: 5.0
- Basis: Size prices from pricing.toml (loaded by the API) at build revision 1ac5595375130d45290090e82ed0f554ccd45405-dirty
- Components:
- App server: size s-1vcpu-1gb, quantity 1.0, monthly amount 5.0
Evidence Summary
- Kind: canary_run
Summary: Destination side verified: the Express pattern fixture deployed on Ample (npm install, npm run build --if-present, npm run start on the node-22 template) and its checks passed.
Last Verified At
2026-09-21T02:34:39Z
Formats
Next Actions
- Browse the catalog index
- Operation: GET, Path: /v1/catalog
- Search published recipes by intent, stack and constraints
- Operation: POST, Path: /v1/catalog/search
- Prepare a side-effect-free deployment plan for an authorized project
- Operation: POST, Path: /v1/catalog/plan
- Read the existing agent authentication setup
- Operation: GET, Path: /mcp/setup
- Browse Cloudflare R2 bucket
- Operation: GET, Path: /v1/catalog/nodes/migration%3Acloudflare-r2-bucket
- Browse Public media library
- Operation: GET, Path: /v1/catalog/nodes/pattern%3Apublic-media-library
- Browse Migrate objects
- Operation: GET, Path: /v1/catalog/nodes/intent%3Amigrate-objects