Cloudflare Workers Adapter
The Cloudflare adapter runs Mocktioneer on Cloudflare Workers, providing global edge deployment through Cloudflare's network.
Overview
| Property | Value |
|---|---|
| Crate | mocktioneer-adapter-cloudflare |
| Target | wasm32-unknown-unknown |
| Platform | Cloudflare Workers |
| Use Case | Production edge deployment |
Prerequisites
Wrangler CLI
bashnpm install -g wrangler # Or use npx wranglerWASM target
bashrustup target add wasm32-unknown-unknownworker-build (used by the default
wrangler.tomlbuild command)bashcargo install worker-buildCloudflare account with Workers enabled
Authenticate Wrangler
bashwrangler login
Local Development
Run locally using Wrangler's local mode:
# Using EdgeZero CLI
edgezero-cli serve --adapter cloudflare
# Or directly
wrangler dev --config crates/mocktioneer-adapter-cloudflare/wrangler.tomlThis starts a local server that emulates the Workers environment.
Building
# Using EdgeZero CLI
edgezero-cli build --adapter cloudflare
# Or directly
cargo build --release --target wasm32-unknown-unknown -p mocktioneer-adapter-cloudflareThe build produces a WASM binary at:
target/wasm32-unknown-unknown/release/mocktioneer_adapter_cloudflare.wasmDeployment
First-Time Setup
Edit
crates/mocktioneer-adapter-cloudflare/wrangler.toml:tomlname = "mocktioneer-adapter-cloudflare" main = "build/worker/shim.mjs" compatibility_date = "2023-05-01" [build] command = "worker-build --release"Deploy:
bashwrangler publish --config crates/mocktioneer-adapter-cloudflare/wrangler.toml
Subsequent Deployments
# Using EdgeZero CLI
edgezero-cli deploy --adapter cloudflare
# Or directly
wrangler publish --config crates/mocktioneer-adapter-cloudflare/wrangler.tomlConfiguration
Build Settings
[adapters.cloudflare.build]
target = "wasm32-unknown-unknown"
profile = "release"
features = ["cloudflare"]Logging
[adapters.cloudflare.logging]
level = "info"
echo_stdout = trueCloudflare Workers logs are visible in:
wrangler tailfor real-time logs- Workers Analytics in the dashboard
wrangler.toml
The crates/mocktioneer-adapter-cloudflare/wrangler.toml contains Workers-specific configuration:
name = "mocktioneer-adapter-cloudflare"
main = "build/worker/shim.mjs"
compatibility_date = "2023-05-01"
[vars]
# Environment variables
ENVIRONMENT = "production"
[[kv_namespaces]]
# KV store bindings if needed
# binding = "MY_KV"
# id = "xxx"Custom Domains
Using workers.dev
By default, your Worker is available at:
https://mocktioneer.<your-subdomain>.workers.devCustom Domain
- Add domain to Cloudflare (if not already)
- In Workers dashboard, go to your Worker
- Click "Triggers" > "Custom Domains"
- Add your domain
Or via wrangler.toml:
routes = [
{ pattern = "mocktioneer.example.com/*", zone_name = "example.com" }
]Environment Variables
Set environment variables in wrangler.toml:
[vars]
LOG_LEVEL = "debug"Or as secrets:
wrangler secret put API_KEYMonitoring
Real-Time Logs
wrangler tail --config crates/mocktioneer-adapter-cloudflare/wrangler.tomlDashboard Analytics
In the Cloudflare dashboard under Workers:
- Request count
- CPU time
- Error rate
- Geographic distribution
Troubleshooting
Build Errors
# Ensure target is installed
rustup target add wasm32-unknown-unknown
# Clean and rebuild
cargo clean
cargo build --release --target wasm32-unknown-unknown -p mocktioneer-adapter-cloudflareLocal Development Issues
# Check wrangler version
wrangler --version
# Run with verbose output
wrangler dev --config crates/mocktioneer-adapter-cloudflare/wrangler.toml --localDeployment Failures
# Check authentication
wrangler whoami
# Validate configuration
wrangler publish --dry-run --config crates/mocktioneer-adapter-cloudflare/wrangler.tomlPerformance Considerations
Cloudflare Workers has these limits:
| Limit | Free | Paid |
|---|---|---|
| CPU time | 10ms | 50ms |
| Memory | 128 MB | 128 MB |
| Script size | 1 MB | 10 MB |
| Subrequests | 50 | 1000 |
Mocktioneer typically uses:
- < 5ms CPU time per request
- < 10 MB memory
- No subrequests
Workers KV Integration
If you need persistent storage, add KV bindings:
[[kv_namespaces]]
binding = "MOCKTIONEER_KV"
id = "your-kv-namespace-id"Create the namespace:
wrangler kv:namespace create "MOCKTIONEER_KV"Next Steps
- Configure custom domain
- Set up monitoring and alerts
- Review API reference for endpoint testing
- Consider Fastly adapter as an alternative