# Migrate Cloudflare CDN Configuration: Downloadable File Delivery

Move CDN delivery from Cloudflare CDN configuration to Ample, one component at a time. Destination verified on Ample: a generated CSV stored with a Content-Disposition attachment header and served from the CDN URL with that header intact, so browsers download it under the stored filename. Source procedure: Record page rules, cache rules and the asset paths the app references. Not migrated automatically: Cloudflare cache rules, Workers, Transform Rules and tiered caching are not migrated; Ample verifies delivery of published bucket objects only. Cutover: Redeploy the app with the new asset base URL, verify delivery from the CDN URL, then retire the old cache rules. Rollback: keep the source untouched until you confirm; nothing at the source is changed or deleted by this guide.

## Representative Queries
- Migrate Cloudflare CDN configuration: Downloadable file delivery
- Where can I host Downloadable file delivery?
- I need a component-scoped export/import or reconfiguration procedure for Downloadable file delivery, with compatibility checks, verification and rollback.

## Resource Requirements
- CDN

## Infrastructure Requirements
- **CDN:** The CDN host serves objects from published buckets. It does not front app compute and is not a cache or key-value store.

## Workload
Downloadable file delivery

## Migration Source
Cloudflare CDN configuration

## Prerequisites
- Authorized access to the Cloudflare CDN configuration 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
1. **Inventory the source**: List what Cloudflare CDN configuration provides beyond the component you are moving. Out of scope here: Cloudflare cache rules, Workers, Transform Rules and tiered caching are not migrated; Ample verifies delivery of published bucket objects only.
2. **Source step 1**: Record page rules, cache rules and the asset paths the app references
3. **Source step 2**: Copy the public assets into a published Ample bucket under versioned keys with immutable Cache-Control
4. **Source step 3**: Update the app to build asset URLs from the Ample public URL
5. **Publish the destination bucket**: Create and publish the asset bucket, upload versioned assets with immutable Cache-Control, and point the app at the public URL.
6. **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/downloadable-file-delivery).
7. **Cut over**: Redeploy the app with the new asset base URL, verify delivery from the CDN URL, then retire the old cache rules.
8. **Rollback**: Point DNS or configuration back to the source. The source was never modified; deletion is a separate, user-executed step after validation.

## Examples
- **Next.js pattern fixture (destination)**: Verified destination basis: downloadable file delivery.

## Success Checks
- Destination app responds on its public URL
- Downloadable-file-delivery 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 CDN configuration'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: Cloudflare cache rules, Workers, Transform Rules and tiered caching are not migrated; Ample verifies delivery of published bucket objects only.

## Cost Estimate
- **Monthly Amount**: $5.00
  - **Components**: App server, size: s-1vcpu-1gb, quantity: 1.0
  - **Note**: Destination always-on monthly price of the tested sizes; apps auto-pause when idle. Source costs are unknown to Ample.

## Evidence Summary
- **Destination side verified**: The Next.js pattern fixture deployed on Ample and its checks passed.

## Next Actions
1. **Browse the catalog index**: [`/v1/catalog`](#)
2. **Search published recipes by intent**: [`/v1/catalog/search`](#)
3. **Prepare a deployment plan**: [`/v1/catalog/plan`](#)
4. **Read existing agent authentication setup**: [`/mcp/setup`](#)
5. **Browse Cloudflare CDN configuration**: [`/v1/catalog/nodes/migration:cloudflare-cdn-configuration`](#)
6. **Browse Downloadable file delivery**: [`/v1/catalog/nodes/pattern:downloadable-file-delivery`](#)
7. **Browse Migrate CDN**: [`/v1/catalog/nodes/intent:migrate-cdn`](#)
