mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2026-03-21 18:11:27 -07:00
update skills
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
# Configuration
|
||||
|
||||
## Dispatch Namespace Binding
|
||||
|
||||
### wrangler.jsonc
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "./node_modules/wrangler/config-schema.json",
|
||||
"dispatch_namespaces": [{
|
||||
"binding": "DISPATCHER",
|
||||
"namespace": "production"
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
## Worker Isolation Mode
|
||||
|
||||
Workers in a namespace run in **untrusted mode** by default for security:
|
||||
- No access to `request.cf` object
|
||||
- Isolated cache per Worker (no shared cache)
|
||||
- `caches.default` disabled
|
||||
|
||||
### Enable Trusted Mode
|
||||
|
||||
For internal platforms where you control all code:
|
||||
|
||||
```bash
|
||||
curl -X PUT \
|
||||
"https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/workers/dispatch/namespaces/$NAMESPACE" \
|
||||
-H "Authorization: Bearer $API_TOKEN" \
|
||||
-d '{"name": "'$NAMESPACE'", "trusted_workers": true}'
|
||||
```
|
||||
|
||||
**Caveats:**
|
||||
- Workers share cache within namespace (use cache key prefixes: `customer-${id}:${key}`)
|
||||
- `request.cf` object accessible
|
||||
- Redeploy existing Workers after enabling trusted mode
|
||||
|
||||
**When to use:** Internal platforms, A/B testing platforms, need geolocation data
|
||||
|
||||
|
||||
### With Outbound Worker
|
||||
```jsonc
|
||||
{
|
||||
"dispatch_namespaces": [{
|
||||
"binding": "DISPATCHER",
|
||||
"namespace": "production",
|
||||
"outbound": {
|
||||
"service": "outbound-worker",
|
||||
"parameters": ["customer_context"]
|
||||
}
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
## Wrangler Commands
|
||||
|
||||
```bash
|
||||
wrangler dispatch-namespace list
|
||||
wrangler dispatch-namespace get production
|
||||
wrangler dispatch-namespace create production
|
||||
wrangler dispatch-namespace delete staging
|
||||
wrangler dispatch-namespace rename old new
|
||||
```
|
||||
|
||||
## Custom Limits
|
||||
|
||||
Set CPU time and subrequest limits per invocation:
|
||||
|
||||
```typescript
|
||||
const userWorker = env.DISPATCHER.get(
|
||||
workerName,
|
||||
{},
|
||||
{
|
||||
limits: {
|
||||
cpuMs: 10, // Max CPU ms
|
||||
subRequests: 5 // Max fetch() calls
|
||||
}
|
||||
}
|
||||
);
|
||||
```
|
||||
|
||||
Handle limit violations:
|
||||
```typescript
|
||||
try {
|
||||
return await userWorker.fetch(request);
|
||||
} catch (e) {
|
||||
if (e.message.includes("CPU time limit")) {
|
||||
return new Response("CPU limit exceeded", { status: 429 });
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
```
|
||||
|
||||
## Static Assets
|
||||
|
||||
Deploy HTML/CSS/images with Workers. See [api.md](./api.md#static-assets) for upload process.
|
||||
|
||||
### Wrangler
|
||||
```jsonc
|
||||
{
|
||||
"name": "customer-site",
|
||||
"main": "./src/index.js",
|
||||
"assets": {
|
||||
"directory": "./public",
|
||||
"binding": "ASSETS"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
npx wrangler deploy --name customer-site --dispatch-namespace production
|
||||
```
|
||||
|
||||
### Dashboard Deployment
|
||||
|
||||
Alternative to CLI:
|
||||
|
||||
1. Upload Worker file in dashboard
|
||||
2. Add `--dispatch-namespace` flag: `wrangler deploy --dispatch-namespace production`
|
||||
3. Or configure in wrangler.jsonc under `dispatch_namespaces`
|
||||
|
||||
See [api.md](./api.md) for programmatic deployment via REST API or SDK.
|
||||
|
||||
## Tags
|
||||
|
||||
Organize/search Workers (max 8/script):
|
||||
|
||||
```bash
|
||||
# Set tags
|
||||
curl -X PUT ".../tags" -d '["customer-123", "pro", "production"]'
|
||||
|
||||
# Filter by tag
|
||||
curl ".../scripts?tags=production%3Ayes"
|
||||
|
||||
# Delete by tag
|
||||
curl -X DELETE ".../scripts?tags=customer-123%3Ayes"
|
||||
```
|
||||
|
||||
Common patterns: `customer-123`, `free|pro|enterprise`, `production|staging`
|
||||
|
||||
## Bindings
|
||||
|
||||
**Supported binding types:** 29 total including KV, D1, R2, Durable Objects, Analytics Engine, Service, Assets, Queue, Vectorize, Hyperdrive, Workflow, AI, Browser, and more.
|
||||
|
||||
Add via API metadata (see [api.md](./api.md#deploy-with-bindings)):
|
||||
```json
|
||||
{
|
||||
"bindings": [
|
||||
{"type": "kv_namespace", "name": "USER_KV", "namespace_id": "..."},
|
||||
{"type": "r2_bucket", "name": "STORAGE", "bucket_name": "..."},
|
||||
{"type": "d1", "name": "DB", "id": "..."}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Preserve existing bindings:
|
||||
```json
|
||||
{
|
||||
"bindings": [{"type": "r2_bucket", "name": "STORAGE", "bucket_name": "new"}],
|
||||
"keep_bindings": ["kv_namespace", "d1"] // Preserves existing bindings of these types
|
||||
}
|
||||
```
|
||||
|
||||
For complete binding type reference, see [bindings](../bindings/) documentation
|
||||
|
||||
See [README.md](./README.md), [api.md](./api.md), [patterns.md](./patterns.md), [gotchas.md](./gotchas.md)
|
||||
Reference in New Issue
Block a user