← Cloudflare Workers / workers / wrangler
Prostředí
Wrangler umožňuje pomocí prostředí vytvářet různé konfigurace pro stejnou aplikaci Workeru. Prostředí se konfigurují v Konfigurační soubor Wrangler.
Když vytvoříte prostředí, Cloudflare ve skutečnosti vytvoří nový Worker s názvem <top-level-name>-<environment-name>. Například projekt Workeru s názvem my-worker s prostředím dev by se nasadil jako Worker s názvem my-worker-dev.
Prohlédněte si následující tok prostředí:
-
Vytvořte Worker s názvem
my-workernapříklad. -
Vytvořte prostředí, například
dev, ve Workeru v Konfigurační soubor Wrangler, přidáním[env.<ENV_NAME>]sekce.{ "name": "my-worker", "env": { "<ENV_NAME>": { // environment-specific configuration goes here } } }name = "my-worker" [env] "<ENV_NAME>" = { } -
Můžete nakonfigurovat
devprostředí s jinými hodnotami než prostředí nejvyšší úrovně. Podrobnosti v zde o tom, jak se různé možnosti dědí, nebo nedědí, mezi prostředími. Například chcete-li nastavit jinou route pro Workera vdevprostředí:{ "$schema": "./node_modules/wrangler/config-schema.json", "name": "your-worker", "route": "example.com", "env": { "dev": { "route": "dev.example.com", }, }, }"$schema" = "./node_modules/wrangler/config-schema.json" name = "your-worker" route = "example.com" [env.dev] route = "dev.example.com" -
Prostředí se používají s
--envnebo-epříznak u příkazů Wrangler. Worker můžete například vyvíjet vdevprostředí spuštěnímnpx wrangler dev -e=dev, a nasaďte jej pomocínpx wrangler deploy -e=dev.Alternativně můžete použít
CLOUDFLARE_ENVproměnná prostředí pro výběr aktivního prostředí. NapříkladCLOUDFLARE_ENV=dev npx wrangler deploynasadí dodevprostředí.--envargument příkazové řádky má přednost předCLOUDFLARE_ENVproměnná prostředí.
Neděditelné klíče a prostředí
Neděditelné klíče lze konfigurovat na nejvyšší úrovni, prostředí je ale nemohou dědit, takže je nutné je nastavit zvlášť pro každé prostředí.
Například vazby a proměnné prostředí nejsou dědičné a musí se zadávat zvlášť pro každé prostředí ve vašem Konfigurační soubor Wrangler.
Prohlédněte si následující ukázkový soubor Wrangler:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "my-worker",
"vars": {
"API_HOST": "example.com",
},
"kv_namespaces": [
{
"binding": "<BINDING_NAME>",
"id": "<KV_NAMESPACE_ID_DEV>",
},
],
"env": {
"production": {
"vars": {
"API_HOST": "production.example.com",
},
"kv_namespaces": [
{
"binding": "<BINDING_NAME>",
"id": "<KV_NAMESPACE_ID_PRODUCTION>",
},
],
},
},
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
[vars]
API_HOST = "example.com"
[[kv_namespaces]]
binding = "<BINDING_NAME>"
id = "<KV_NAMESPACE_ID_DEV>"
[env.production.vars]
API_HOST = "production.example.com"
[[env.production.kv_namespaces]]
binding = "<BINDING_NAME>"
id = "<KV_NAMESPACE_ID_PRODUCTION>"Service bindings
Chcete-li použít service binding která cílí na Worker v konkrétním prostředí, musíte připojit název prostředí k názvu cílového Workeru v service pole. Mělo by být ve formátu <worker-name>-<environment-name>.
V příkladu níže máme dva Workery, oba s staging prostředí. worker-b má service binding na worker-a. Všimněte si, jak service v staging prostředí odkazuje na worker-a-staging, zatímco service binding na nejvyšší úrovni odkazuje na worker-a.
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "worker-a",
"vars": {
"FOO": "<top-level-var>",
},
"env": {
"staging": {
"vars": {
"FOO": "<staging-var>",
},
},
},
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "worker-a"
[vars]
FOO = "<top-level-var>"
[env.staging.vars]
FOO = "<staging-var>"{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "worker-b",
"services": {
"binding": "<BINDING_NAME>",
"service": "worker-a",
},
// Note how `service = "worker-a-staging"`
"env": {
"staging": {
"service": {
"binding": "<BINDING_NAME>",
"service": "worker-a-staging",
},
},
},
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "worker-b"
[services]
binding = "<BINDING_NAME>"
service = "worker-a"
[env.staging.service]
binding = "<BINDING_NAME>"
service = "worker-a-staging"Secrets pro produkci
Můžete přiřadit hodnoty specifické pro dané prostředí secrets spuštěním příkazu wrangler secret put <KEY> -env. Můžete také vytvořit dotenv typové soubory nazvané .dev.vars.<environment-name>.
Stejně jako jiné proměnné prostředí jsou tajné klíče nedědičné a musí být definováno pro každé prostředí zvlášť.
Secrets v místním vývoji
Uložte secrets pro použití při lokálním vývoji buď do .dev.vars soubor nebo .env soubor ve stejném adresáři jako konfigurační soubor Wrangleru.
Tyto soubory by měly být formátovány pomocí dotenv ↗ syntax. Například:
SECRET_KEY="value"
API_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"Chcete-li nastavit různé tajné klíče pro každé prostředí Cloudflare, vytvořte soubory s názvem .dev.vars.<environment-name> nebo .env.<environment-name>.
Když v lokálním vývoji vyberete prostředí Cloudflare, načte se nejprve soubor specifický pro dané prostředí, a to před obecným .dev.vars (nebo .env) soubor.
- Při použití
.dev.vars.<environment-name>soubory, všechny secrets musí být definovány pro každé prostředí zvlášť. Pokud.dev.vars.<environment-name>existuje, načte se jen ten;.dev.varssoubor se nenačte. - Naproti tomu všechny odpovídající
.envsoubory se načtou a hodnoty se sloučí. Pro každou proměnnou se použije hodnota z nejspecifičtějšího souboru, a to v tomto pořadí priority:.env.<environment-name>.local(nejvíce specifické).env.local.env.<environment-name>.env(nejméně specifické)
Příklady
Staging a produkční prostředí
Následující soubor Wrangler přidává dvě prostředí, [env.staging] a [env.production], do souboru Wrangler. Pokud nasazujete do Custom Domain nebo trasa, musíte zadat route nebo routes klíč pro každé prostředí.
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "my-worker",
"route": "dev.example.com/*",
"vars": {
"ENVIRONMENT": "dev",
},
"env": {
"staging": {
"vars": {
"ENVIRONMENT": "staging",
},
"route": "staging.example.com/*",
},
"production": {
"vars": {
"ENVIRONMENT": "production",
},
"routes": ["example.com/foo/*", "example.com/bar/*"],
},
},
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
route = "dev.example.com/*"
[vars]
ENVIRONMENT = "dev"
[env.staging]
route = "staging.example.com/*"
[env.staging.vars]
ENVIRONMENT = "staging"
[env.production]
routes = [ "example.com/foo/*", "example.com/bar/*" ]
[env.production.vars]
ENVIRONMENT = "production"Název prostředí můžete předat pomocí --env příznak pro spouštění příkazů v konkrétním prostředí.
S touto konfigurací se Wrangler bude chovat následovně:
npx wrangler deployUploaded my-worker
Published my-worker
dev.example.com/*npx wrangler deploy --env stagingUploaded my-worker-staging
Published my-worker-staging
staging.example.com/*npx wrangler deploy --env productionUploaded my-worker-production
Published my-worker-production
example.com/*Jakýkoli definovaný proměnné prostředí ( vars klíč) jsou dostupné prostřednictvím env objekt ve vašem Workeru.
S touto konfigurací env.ENVIRONMENT proměnnou lze použít k volání konkrétního kódu v závislosti na daném prostředí:
export default {
async fetch(request, env, ctx) {
if (env.ENVIRONMENT === "staging") {
// staging-specific code
} else if (env.ENVIRONMENT === "production") {
// production-specific code
}
},
};Staging prostředí s *.workers.dev
Chcete-li nasadit svůj kód do *.workers.dev subdoménu, zahrňte workers_dev = true v požadovaném prostředí. Váš soubor Wrangler pak může vypadat takto:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "my-worker",
"route": "example.com/*",
"env": {
"staging": {
"workers_dev": true,
},
},
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
route = "example.com/*"
[env.staging]
workers_dev = trueS touto konfigurací se Wrangler bude chovat následovně:
npx wrangler deployUploaded my-worker
Published my-worker
example.com/*npx wrangler deploy --env stagingUploaded my-worker
Published my-worker
https://my-worker-staging.<YOUR_SUBDOMAIN>.workers.dev