Fastly Compute Adapter
The Fastly adapter runs Mocktioneer on Fastly's Compute platform, providing global edge deployment with low latency.
Overview
| Property | Value |
|---|---|
| Crate | mocktioneer-adapter-fastly |
| Target | wasm32-wasip1 |
| Platform | Fastly Compute |
| Use Case | Production edge deployment |
Prerequisites
Fastly CLI
bashbrew install fastly/tap/fastly # Or download from https://developer.fastly.com/tools/cliWASM target
bashrustup target add wasm32-wasip1Fastly account with Compute enabled
Local Development
Run locally using Fastly's Viceroy runtime:
# Using EdgeZero CLI
edgezero-cli serve --adapter fastly
# Or directly
fastly compute serve -C crates/mocktioneer-adapter-fastlyThis starts a local server that emulates the Fastly Compute environment.
Building
# Using EdgeZero CLI
edgezero-cli build --adapter fastly
# Or directly
cargo build --release --target wasm32-wasip1 -p mocktioneer-adapter-fastlyThe build produces a WASM binary at:
target/wasm32-wasip1/release/mocktioneer-adapter-fastly.wasmDeployment
First-Time Setup
cd crates/mocktioneer-adapter-fastly
fastly compute publishThe CLI will prompt you to:
- Create a new service or select existing
- Configure the domain
- Deploy the WASM bundle
Subsequent Deployments
# Using EdgeZero CLI
edgezero-cli deploy --adapter fastly
# Or directly
fastly compute deploy -C crates/mocktioneer-adapter-fastlyConfiguration
Build Settings
[adapters.fastly.build]
target = "wasm32-wasip1"
profile = "release"
features = ["fastly"]Logging
[adapters.fastly.logging]
endpoint = "mocktioneerlog"
level = "info"
echo_stdout = falseFastly logging requires a configured log endpoint. Create one in the Fastly console:
- Go to your service configuration
- Add a logging endpoint (e.g., S3, BigQuery, or HTTPS)
- Name it to match
endpointin the config
fastly.toml
The crates/mocktioneer-adapter-fastly/fastly.toml contains Fastly-specific configuration:
[local_server]
# Local development settings
[local_server.backends]
# Backend configurations if neededCustom Domains
Add custom domains to your Fastly service:
fastly domain create --service-id <SERVICE_ID> --name mocktioneer.example.comOr configure in the Fastly console under Domains.
Environment Variables
Fastly Compute doesn't support traditional environment variables. Instead, use:
- Config stores for configuration
- Secret stores for sensitive data
- Edge dictionaries for key-value lookups
Monitoring
Logs
View logs in real-time:
fastly log-tail --service-id <SERVICE_ID>Metrics
Monitor in the Fastly dashboard:
- Request rate
- Error rate
- Response time percentiles
- Cache hit ratio (if caching enabled)
Troubleshooting
Build Errors
If you see WASM-related errors:
# Ensure target is installed
rustup target add wasm32-wasip1
# Clean and rebuild
cargo clean
cargo build --release --target wasm32-wasip1 -p mocktioneer-adapter-fastlyLocal Server Issues
# Check Viceroy is working
fastly compute serve --verbose -C crates/mocktioneer-adapter-fastlyDeployment Failures
# Validate the package
fastly compute validate -C crates/mocktioneer-adapter-fastly
# Check service status
fastly service describe --service-id <SERVICE_ID>Performance Considerations
Fastly Compute has some constraints:
| Limit | Value |
|---|---|
| Memory | 128 MB |
| Request timeout | 60 seconds |
| Package size | 100 MB |
Mocktioneer is well within these limits for typical usage.
Next Steps
- Set up logging endpoints in Fastly console
- Configure custom domains
- Review API reference for endpoint testing
- Consider Cloudflare adapter as an alternative