page:migrate:backblaze b2 s3 bucket:browser file uploads
Migrate Backblaze B2 S3 bucket: Browser file uploads
Move object storage from Backblaze B2 S3 bucket to Ample, one component at a time. Destination verified on Ample: content-type and size validation that rejects disallowed files, an object written to a private bucket and a row linking the record to the object key (reject=ok upload=ok linked=ok). Source procedure: Inventory the bucket with rclone size or the B2 dashboard. Not migrated automatically: B2 file versions, lifecycle rules and application-key restrictions are not migrated. Cutover: Switch the app's S3_* environment to the Ample bucket with a redeploy, verify reads and writes, keep B2 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 Backblaze B2 S3 bucket: Browser file uploads
- Where can I host Browser file uploads?
- I need a component-scoped export/import or reconfiguration procedure for Browser file uploads, with compatibility checks, verification and rollback.
Migration Source
Source: Backblaze B2 S3 bucket
Workload: Browser file uploads
Release Status: published
Support Status: verified
Execution Status: unbound
Docs Only: true
Prerequisites
- Authorized access to the Backblaze B2 S3 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 Backblaze B2 S3 bucket provides beyond the component you are moving. Out of scope here: B2 file versions, lifecycle rules and application-key restrictions are not migrated.Source step 1
Inventory the bucket withrclone sizeor the B2 dashboardSource step 2
Copy objects withrclone syncfrom the B2 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 copyCreate 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 --nameValidate before cutover
Run the app's own checks and, for data, compare counts and checksums; the example checks are the pattern self-tests (/p/browser-file-uploads).Cut over
Switch the app's S3_* environment to the Ample bucket with a redeploy, verify reads and writes, keep B2 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.
Success Checks
Destination app responds on its public URL
- Kind: http_get
- Path: /
- Expect: ample canary express patterns
Browser-file-uploads check from the destination example
- Kind: http_get
- Path: /p/browser-file-uploads
- Expect: see the pattern fixture checks
Data or object counts and checksums match the source
- Kind: manual
- Expect: operator comparison before cutover.
Limitations
- Documentation only: nothing is executed automatically and no execution binding is offered.
- The source-side procedure is documented from Backblaze B2 S3 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: B2 file versions, lifecycle rules and application-key restrictions are not migrated.
- Verified on the node-22 template at s-1vcpu-1gb; region, compliance, and request-duration limits are unknown.
- PutObject and GetObject with path-style addressing are verified; bulk copy tooling and other S3 operations are not.
Cost Estimate
- Currency: USD
- Monthly Amount: $5.00
- Authoritative: true
- Basis: size prices from pricing.toml (loaded by the API) at build revision 1ac5595375130d45290090e82ed0f554ccd45405-dirty
- Components:
- Name: app server
- Size: s-1vcpu-1gb
- Quantity: 1.0
- Monthly Amount: $5.00
- Note: Destination always-on monthly price of the tested sizes; apps auto-pause when idle. Source costs are unknown to Ample.
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 (content-type and size validation that rejects disallowed files, an object written to a private bucket and a row linking the record to the object key (reject=ok upload=ok linked=ok)). The source-side export from Backblaze B2 S3 bucket is documented from the vendor's standard tooling and was not executed by this catalog's evidence.
- Observed At: 2026-09-21T02:34:39Z
- Implementation Revision: 1d28ae0-dirty (CLI 0.1.21)
- Expires At: 2027-03-20T02:34:39Z
- Scope:
- Checks: [/p/browser-file-uploads]
- Destination Only: true
- Template: node-22
Next Actions
- Action: Browse the catalog index
- Operation ID: catalog_index
- Method: GET
- Relative Path: /v1/catalog
- Action: Search published recipes by intent, stack, and constraints
- Operation ID: search_recipes
- Method: POST
- Relative Path: /v1/catalog/search
- Parameters:
- Body: {"limit":5,"query":"Migrate Backblaze B2 S3 bucket: Browser file uploads"}
- Action: Prepare a side-effect-free deployment plan for an authorized project
- Operation ID: plan_deployment
- Method: POST
- Relative Path: /v1/catalog/plan
- Parameters:
- Body: {"inputs":{},"projectId":"","recipeId":"page:migrate:backblaze-b2-s3-bucket:browser-file-uploads","recipeRevision":"r1"}
- Action: Read the existing agent authentication setup
- Operation ID: existing_auth_setup
- Method: GET
- Relative Path: /mcp/setup
- Action: Browse Backblaze B2 S3 bucket
- Operation ID: browse_node
- Method: GET
- Relative Path: /v1/catalog/nodes/migration%3Abackblaze-b2-s3-bucket
- Action: Browse Browser file uploads
- Operation ID: browse_node
- Method: GET
- Relative Path: /v1/catalog/nodes/pattern%3Abrowser-file-uploads
- Action: Browse Migrate objects
- Operation ID: browse_node
- Method: GET
- Relative Path: /v1/catalog/nodes/intent%3Amigrate-objects