← Cloudflare Workers / workers / versions-and-deployments
Přepisy verzí
Pomocí přepsání verze (version override) můžete odeslat požadavek na konkrétní verzi svého Workeru v aktuálním nasazení, a to i na verze nastavené na obsluhu 0 % provozu.
Jak nastavit přepsání verzí
Chcete-li v požadavku přepsat verzi, nastavte Cloudflare-Workers-Version-Overrides hlavičku v požadavku na váš Worker. Cloudflare-Workers-Version-Overrides je Strukturovaná hlavička Dictionary ↗ který může obsahovat více párů klíč hodnota. Každý klíč uvádí název Workeru, na který se má vztahovat override. hodnota uvádí ID verze, které se má použít, a musí to být Řetězec ↗. Například:
curl -s https://example.com -H 'Cloudflare-Workers-Version-Overrides: my-worker-name="dc8dcd28-271b-4367-9840-6c244f84cb40"'Ověřte, že byly použity přepisy verzí
Existuje několik důvodů, proč se přepsání verze požadavku nemusí použít. Například:
- Nasazení nemusí obsahovat zadanou verzi. Po nedávné změně může trvat několik sekund, než bude dostupná globálně.
- Hodnota hlavičky nemusí být platná Slovník ↗.
Pokud se přepsání verze požadavku neuplatní, bude požadavek směrován podle procentuálních hodnot nastavených v konfiguraci postupného nasazení.
Verzi svého Workeru, která byla vyvolána, můžete zjistit pomocí Observabilita ↗, a to i ve funkcích, jako jsou Logpush. Případně, pokud chcete klienty informovat o verzi, kterou spustili (například kvůli rychlejšímu a přehlednějšímu ladění), můžete použít vazba metadat verze a vrátí ID verze v odpovědi Workeru.
Příklad smoke testu
Novou verzi možná budete chtít nejprve otestovat v produkčním prostředí, než ji postupně nasadíte na stále větší podíl externího provozu. Tomuto postupu se běžně říká „smoke test“.
V tomto příkladu je vaše nasazení zpočátku nakonfigurováno tak, aby směrovalo veškerý provoz na jedinou verzi:
| ID verze | Procento |
|---|---|
| db7cd8d3-4425-4fe7-8c81-01bf963b6067 | 100% |
Vytvořte nové nasazení pomocí wrangler versions deploy a u nové verze nastavte 0%, zatímco předchozí verze zůstane na 100%.
| ID verze | Procento |
|---|---|
| dc8dcd28-271b-4367-9840-6c244f84cb40 | 0% |
| db7cd8d3-4425-4fe7-8c81-01bf963b6067 | 100% |
Nyní otestujte novou verzi pomocí přepsání verze (version override), než ji postupně navýšíte na 100 %:
curl -s https://example.com -H 'Cloudflare-Workers-Version-Overrides: my-worker-name="dc8dcd28-271b-4367-9840-6c244f84cb40"'Service bindings
Můžete nastavit Cloudflare-Workers-Version-Overrides hlavičku při vytváření dílčího požadavku z jednoho Workeru do druhého pomocí service binding. Díky tomu můžete z upstream Workeru otestovat konkrétní verzi downstream Workeru.
Pokud předáte původní objekt požadavku, přepisující hlavička se přenese automaticky:
// The override header from the inbound request is forwarded to the downstream Worker.
export default {
async fetch(request, env) {
return env.MY_SERVICE.fetch(request);
},
};// The override header from the inbound request is forwarded to the downstream Worker.
export default {
async fetch(request: Request, env: Env): Promise<Response> {
return env.MY_SERVICE.fetch(request);
},
};Alternativně můžete explicitně nastavit přepisující hlavičku:
// Replace the version ID with the target version from `wrangler versions list`.
export default {
async fetch(request, env) {
const response = await env.MY_SERVICE.fetch("https://example.com/", {
headers: {
"Cloudflare-Workers-Version-Overrides":
'my-downstream-worker="dc8dcd28-271b-4367-9840-6c244f84cb40"',
},
});
return response;
},
};// Replace the version ID with the target version from `wrangler versions list`.
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const response = await env.MY_SERVICE.fetch("https://example.com/", {
headers: {
"Cloudflare-Workers-Version-Overrides":
'my-downstream-worker="dc8dcd28-271b-4367-9840-6c244f84cb40"',
},
});
return response;
},
};Související zdroje
- Afinita verze - Použijte cookies a hlavičky k připnutí uživatelů ke konkrétní verzi během postupného nasazení.
- Gradual Deployments - Zjistěte, jak funguje procentuální rozdělení provozu.
- Service bindings - Jak spolu Workers komunikují.
- Vazba metadat verze : přístup k ID verze a tagu přímo z Workeru.