azion.config.js
Referência do azion.config.js, o arquivo de projeto que a Azion CLI lê para fazer o build e o deploy: cada chave, seu tipo e os valores que ela aceita.
azion.config.js é o arquivo de configuração do projeto que a Azion CLI lê para fazer o build e o deploy de um projeto. É um arquivo JavaScript cujo export padrão, opcionalmente envolvido em defineConfig(...), declara as configurações de build e os recursos de que o projeto precisa na Azion, como aplicações, workloads, connectors, functions e firewalls. azion build faz o build do projeto com ele, azion deploy faz o deploy e azion dev executa o projeto localmente.
Nomes de arquivo e onde a CLI os lê
A CLI procura o arquivo de configuração na pasta do projeto com sete nomes, nesta ordem, e lê o primeiro que encontra: azion.config.ts, azion.config.mts, azion.config.cts, azion.config.js, azion.config.mjs, azion.config.cjs e azion.config.json. O arquivo pode, portanto, ser TypeScript, um ES module, um CommonJS module ou JSON.
Os comandos da CLI que configuram um projeto escrevem o arquivo para você, e a extensão depende do comando e do preset:
| Comando | Arquivo que ele escreve |
|---|---|
azion init com o preset JavaScript | azion.config.mjs |
azion link com --preset html | azion.config.cjs |
azion init e depois azion build, com o preset Angular ou Docusaurus | azion.config.cjs |
azion init e depois azion build, com o preset Astro | azion.config.mjs |
azion sync --iac | azion.config.mjs, gerado a partir dos recursos do projeto na Azion, mesmo quando existe um arquivo azion.config.cjs |
Quando um projeto tem azion.config.mjs e azion.config.cjs, azion deploy lê e atualiza azion.config.mjs.
azion deploy também escreve no arquivo que lê. Um arquivo gerado contém placeholders como $APPLICATION_NAME e $WORKLOAD_NAME, e o primeiro deploy substitui cada um pelo nome do projeto. Em um site estático, cada deploy substitui o prefix do storage por outro valor e exibe a mudança:
defineConfig
defineConfig vem do pacote @aziontech/config, que os arquivos gerados indicam: instale-o como dependência de desenvolvimento com npm install -D @aziontech/config. A função recebe seu objeto de configuração e retorna o mesmo objeto, sem alterações. Ela fornece ao seu editor os tipos da configuração para autocompletar e verificar tipos, e não verifica os valores.
Este arquivo declara um build JavaScript por meio de defineConfig:
A verificação acontece no build. Antes de escrever .edge/manifest.json, o build executa validateConfig, do mesmo pacote, sobre a configuração que leu. A verificação indica o caminho da propriedade de cada valor que recusa, como /applications/0/rules/request/0/criteria/0.
O pacote azion também exporta defineConfig (import { defineConfig } from 'azion'). Esse pacote está obsoleto em favor dos pacotes @aziontech/*, e os tipos de behavior de firewall dele diferem dos que o build aceita; por isso, tipe seu arquivo com @aziontech/config.
Referência de configuração
O objeto de configuração recebe doze chaves de primeiro nível, todas opcionais. Cada tabela abaixo lista as propriedades de uma chave, com o tipo que as declarações de tipo do @aziontech/config atribuem a ela. Um nome com ponto, como browser.maxAgeSeconds, é uma propriedade de um objeto aninhado; Sim na coluna Obrigatório significa, nesse caso, obrigatório sempre que o objeto pai estiver presente.
| Chave | Tipo | Descrição |
|---|---|---|
build | AzionBuild | Como a CLI faz o build do projeto. |
applications | AzionApplication[] | As aplicações do projeto, com seus cache settings, regras e function instances. |
functions | AzionFunction[] | As functions do projeto. |
connectors | AzionConnector[] | Os connectors para os quais as aplicações enviam requisições. |
storage | AzionBucket[] | Os buckets do Object Storage que guardam os arquivos do projeto. |
firewall | AzionFirewall[] | Os firewalls do projeto, com suas regras. |
networkList | AzionNetworkList[] | As network lists com que as regras de firewall comparam. |
purge | AzionPurge[] | As URLs, cache keys ou wildcards a purgar. |
waf | AzionWaf[] | As configurações do Web Application Firewall (WAF). |
workloads | AzionWorkload[] | Os workloads que servem as aplicações em domínios. |
customPages | AzionCustomPage[] | As páginas de erro personalizadas. |
kv | AzionKV[] | Os namespaces do KV Store. |
build
O objeto build define como o projeto é empacotado antes do deploy.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
bundler | 'webpack' | 'esbuild' | Não | O bundler a usar. |
entry | string | string[] | Record<string, string> | Não | O arquivo de entrada, uma lista de arquivos de entrada ou um mapa de nomes de entrada para arquivos. |
preset | string | AzionBuildPreset | Não | O preset a usar, pelo nome ou como um objeto de preset personalizado. |
polyfills | boolean | Não | Se o build adiciona polyfills. |
worker | boolean | Não | Se o build produz um worker. |
extend | (context) => context | Não | Função que recebe a configuração do bundler, webpack ou esbuild, e a retorna estendida. |
memoryFS.injectionDirs | string[] | Sim | Pastas cujos arquivos o build injeta no sistema de arquivos em memória. |
memoryFS.removePathPrefix | string | Sim | Prefixo de caminho removido dos caminhos dos arquivos injetados. |
Preset personalizado
Um preset personalizado é um objeto AzionBuildPreset passado em build.preset. Ele traz a própria configuração e as funções que rodam em torno do build.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
config | AzionConfig | Sim | A configuração que o preset fornece. |
metadata.name | string | Sim | O nome do preset. |
metadata.registry | string | Não | O registry do preset. |
metadata.ext | string | Não | A extensão de arquivo que o preset usa. |
handler | AzionRuntimeModule | Não | Um handler personalizado. |
prebuild | (config, ctx) => Promise<void | AzionPrebuildResult> | Não | Função que roda antes do build. |
postbuild | (config, ctx) => Promise<void> | Não | Função que roda depois do build. |
applications
Cada entrada de applications declara uma aplicação, o recurso que guarda as configurações de entrega de um site ou de uma API.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome da aplicação. |
active | boolean | Não | Se a aplicação está ativa. |
debug | boolean | Não | Se o modo de depuração está ligado para as regras da aplicação. |
edgeCacheEnabled | boolean | Não | Se o Cache está ligado. |
functionsEnabled | boolean | Não | Se Functions está ligado. |
applicationAcceleratorEnabled | boolean | Não | Se o Application Accelerator está ligado. |
imageProcessorEnabled | boolean | Não | Se o Image Processor está ligado. |
cache | AzionCache[] | Não | Os cache settings da aplicação. |
rules | AzionRules | Não | As regras da aplicação: request guarda as regras da fase de requisição, e response as regras da fase de resposta. Cada uma é um AzionRule[]. |
deviceGroups | AzionDeviceGroup[] | Não | Os device groups da aplicação. |
functionsInstances | AzionFunctionInstance[] | Não | As function instances da aplicação. |
Cache settings da aplicação
Cada entrada do cache de uma aplicação declara um cache setting, que uma regra aplica com o behavior set_cache_policy.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do cache setting. |
stale | boolean | Não | Se conteúdo expirado pode ser servido. |
queryStringSort | boolean | Não | Se os parâmetros da query string são ordenados. |
tieredCache.enabled | boolean | Sim | Se o Tiered Cache está ligado. |
tieredCache.topology | 'nearest-region' | 'br-east-1' | 'us-east-1' | Não | A topologia do Tiered Cache. |
methods.post | boolean | Não | Se as requisições POST são cacheadas. |
methods.options | boolean | Não | Se as requisições OPTIONS são cacheadas. |
browser.maxAgeSeconds | number | string | Sim | Idade máxima do conteúdo no cache do navegador, em segundos. |
edge.maxAgeSeconds | number | string | Sim | Idade máxima do conteúdo no cache da Azion, em segundos. |
cacheByCookie.option | 'ignore' | 'all' | 'allowlist' | 'denylist' | Sim | Quais cookies variam o cache. |
cacheByCookie.list | string[] | Não | Os cookies que a opção allowlist ou denylist indica. |
cacheByQueryString.option | 'ignore' | 'all' | 'allowlist' | 'denylist' | Sim | Quais parâmetros da query string variam o cache. |
cacheByQueryString.list | string[] | Não | Os parâmetros que a opção allowlist ou denylist indica. |
Regras da aplicação
Cada entrada de rules.request ou rules.response declara uma regra do Rules Engine da aplicação. Uma regra executa seus behaviors quando seus critérios correspondem.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome da regra. |
description | string | Não | Uma descrição da regra. |
active | boolean | Não | Se a regra está ativa. |
criteria | AzionRuleCriteria[][] | Sim | Os critérios, como um array de grupos. Cada grupo é um array de 1 a 10 critérios. |
behaviors | AzionRuleBehavior[] | Sim | Os behaviors que a regra executa, em ordem. |
Critérios da regra
Cada critério de uma regra de aplicação compara uma variável com um valor. As variáveis que uma regra de aplicação aceita estão em Variáveis de regra, e os operadores em Operadores de comparação.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
variable | string | Sim | A variável a avaliar, envolvida em ${}, como ${uri}. |
conditional | 'if' | 'and' | 'or' | Sim | Como o critério se une aos critérios anteriores. |
operator | string | Sim | O operador de comparação. |
argument | string | Sim, com um operador que recebe um valor | O valor a comparar. Omita-o com exists e does_not_exist. |
Behaviors da regra
Cada behavior de uma regra de aplicação é um objeto com um type e, na maioria dos tipos, um objeto attributes. Um value que recebe um nome ou um ID se refere a um recurso declarado no mesmo arquivo pelo seu name, ou a um recurso existente pelo seu ID.
type | Fase | attributes | Descrição |
|---|---|---|---|
deliver | Requisição e resposta | — | Entrega o conteúdo. |
enable_gzip | Requisição e resposta | — | Liga a compressão GZIP. |
redirect_to_301 | Requisição e resposta | { value: string } | Redireciona para value com status 301. |
redirect_to_302 | Requisição e resposta | { value: string } | Redireciona para value com status 302. |
run_function | Requisição e resposta | { value: string | number } | Executa a function que value indica, pelo nome ou ID. |
capture_match_groups | Requisição e resposta | { regex: string; subject: string; captured_array: string } | Compara regex com subject e guarda os grupos capturados no array que captured_array nomeia, com 1 a 10 caracteres. |
deny | Requisição | — | Nega a requisição. |
no_content | Requisição | — | Não retorna conteúdo. |
finish_request_phase | Requisição | — | Encerra a fase de requisição. |
forward_cookies | Requisição | — | Encaminha os cookies. |
optimize_images | Requisição | — | Otimiza imagens. |
bypass_cache | Requisição | — | Ignora o cache. |
redirect_http_to_https | Requisição | — | Redireciona requisições HTTP para HTTPS. |
rewrite_request | Requisição | { value: string } | Reescreve a URI da requisição para value. |
set_cache_policy | Requisição | { value: string | number } | Aplica o cache setting que value indica, pelo nome ou ID. |
set_connector | Requisição | { value: string | number } | Envia a requisição para o connector que value indica, pelo nome ou ID. |
set_origin | Requisição | { value: string | number } | Define a origem, pelo nome ou ID. |
add_request_header | Requisição | { value: string } | Adiciona à requisição o header em value, escrito como Name: value. |
filter_request_header | Requisição | { value: string } | Remove da requisição o header que value indica. |
add_request_cookie | Requisição | { value: string } | Adiciona um cookie à requisição. |
filter_request_cookie | Requisição | { value: string } | Remove um cookie da requisição. |
add_response_header | Resposta | { value: string } | Adiciona à resposta o header em value, escrito como Name: value. |
filter_response_header | Resposta | { value: string } | Remove da resposta o header que value indica. |
set_cookie | Resposta | { value: string } | Define um cookie na resposta. |
filter_response_cookie | Resposta | { value: string } | Remove um cookie da resposta. |
Device groups
Cada entrada do deviceGroups de uma aplicação declara um device group.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do device group. |
userAgent | string | Sim | A expressão regular que o header User-Agent precisa atender. |
Function instances
Cada entrada do functionsInstances de uma aplicação vincula uma function à aplicação, para que um behavior run_function possa executá-la.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome da function instance. |
ref | string | number | Sim | A function, pelo nome em functions ou pelo ID. |
args | Record<string, unknown> | Não | Os argumentos desta instance. |
active | boolean | Não | Se a instance está ativa. |
functions
Cada entrada de functions declara uma function e o arquivo que guarda o código dela.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome da function. |
path | string | Sim | Caminho do arquivo da function. |
runtime | 'azion_js' | Não | O runtime da function. |
defaultArgs | Record<string, unknown> | Não | Os argumentos padrão passados à function. |
executionEnvironment | 'application' | 'firewall' | Não | Se a function roda em uma aplicação ou em um firewall. |
active | boolean | Não | Se a function está ativa. |
bindings.storage.bucket | string | Sim | O bucket vinculado à function, pelo nome ou ID. |
bindings.storage.prefix | string | Não | O prefixo dentro do bucket vinculado. |
connectors
Cada entrada de connectors declara um connector. O type seleciona o formato de attributes: http e live_ingest recebem endereços e opções de conexão, e storage recebe um bucket.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do connector. |
active | boolean | Não | Se o connector está ativo. |
type | 'http' | 'storage' | 'live_ingest' | Sim | O tipo de connector: HTTP, Object Storage ou Live Ingest. |
attributes | object | Sim | As configurações do connector, em um dos dois formatos abaixo. |
Atributos de connectors HTTP e Live Ingest
Um connector http ou live_ingest recebe o mesmo objeto attributes.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
addresses | ConnectorAddress[] | Sim | Os endereços para os quais o connector envia requisições. |
connectionOptions | ConnectorConnectionOptions | Sim | Como o connector se conecta aos endereços. |
modules | ConnectorModules | Sim | As configurações de load balancer e de origin shield. O tipo o marca como opcional, mas o build recusa um connector http ou live_ingest sem ele. |
Endereços do connector
Cada entrada de attributes.addresses é um endereço de um connector http ou live_ingest.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
address | string | Sim | Um endereço IPv4 ou IPv6, ou um CNAME. |
active | boolean | Não | Se o endereço está ativo. |
httpPort | number | Não | A porta HTTP. |
httpsPort | number | Não | A porta HTTPS. |
modules | object | null | Não | Os modules do endereço. O tipo não declara propriedades para este objeto. |
Opções de conexão
O objeto attributes.connectionOptions de um connector http ou live_ingest define como ele se conecta aos seus endereços.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
dnsResolution | 'both' | 'force_ipv4' | Não | A política de resolução DNS. |
transportPolicy | 'preserve' | 'force_https' | 'force_http' | Não | A política de transporte. |
httpVersionPolicy | 'http1_1' | Não | A política de versão HTTP. |
host | string | Não | Um valor de Host personalizado. |
pathPrefix | string | Não | Um prefixo de caminho adicionado às requisições. |
followingRedirect | boolean | Não | Se o connector segue redirecionamentos. |
realIpHeader | string | Não | O nome do header que leva o IP do cliente. |
realPortHeader | string | Não | O nome do header que leva a porta do cliente. |
Modules do connector
O objeto attributes.modules de um connector http ou live_ingest liga ou desliga o load balancer e o origin shield.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
loadBalancer.enabled | boolean | Sim | Se o load balancer está ligado. |
loadBalancer.config | object | null | Sim | As configurações do load balancer, ou null. |
loadBalancer.config.method | 'round_robin' | 'least_conn' | 'ip_hash' | Não | O método de balanceamento de carga. |
loadBalancer.config.maxRetries | number | Não | O número máximo de novas tentativas. |
loadBalancer.config.connectionTimeout | number | Não | O timeout de conexão, em segundos. |
loadBalancer.config.readWriteTimeout | number | Não | O timeout de leitura e escrita, em segundos. |
originShield.enabled | boolean | Sim | Se o origin shield está ligado. |
originShield.config | object | null | Sim | As configurações do origin shield, ou null. |
originShield.config.originIpAcl.enabled | boolean | Não | Se a lista de controle de acesso de IPs de origem está ligada. |
originShield.config.hmac.enabled | boolean | Não | Se a autenticação HMAC está ligada. |
originShield.config.hmac.config.type | 'aws4_hmac_sha256' | Sim | O tipo de HMAC. |
originShield.config.hmac.config.attributes.region | string | Sim | A região da AWS. |
originShield.config.hmac.config.attributes.service | string | Não | O serviço da AWS. |
originShield.config.hmac.config.attributes.accessKey | string | Sim | A access key. |
originShield.config.hmac.config.attributes.secretKey | string | Sim | A secret key. |
Atributos do connector de storage
Um connector storage lê de um bucket do Object Storage.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
bucket | string | Sim | O nome do bucket. |
prefix | string | Sim | O prefixo dos objetos no bucket. O tipo o marca como opcional, mas o build recusa um connector storage sem ele. |
storage
Cada entrada de storage declara um bucket do Object Storage e a pasta local cujos arquivos vão para ele.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do bucket. |
dir | string | Sim | A pasta local que guarda os arquivos, como ./www. |
prefix | string | Sim | O prefixo sob o qual os arquivos são guardados no bucket. |
workloadsAccess | 'read_only' | 'read_write' | 'restricted' | Não | O acesso que os workloads têm ao bucket. |
firewall
Cada entrada de firewall declara um firewall.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do firewall. |
active | boolean | Não | Se o firewall está ativo. |
functions | boolean | Não | Se Functions está ligado para o firewall. |
networkProtection | boolean | Não | Se o Network Shield está ligado. |
waf | boolean | Não | Se o WAF está ligado. |
debugRules | boolean | Não | Se o modo de depuração está ligado para as regras do firewall. |
rules | AzionFirewallRule[] | Não | As regras do firewall. |
functionsInstances | AzionFirewallFunctionsInstance[] | Não | As function instances do firewall. |
Regras de firewall
Cada entrada do rules de um firewall declara uma regra do Rules Engine do firewall. Ao contrário de uma regra de aplicação, uma regra de firewall recebe um array simples de critérios.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome da regra. |
description | string | Não | Uma descrição da regra. |
active | boolean | Não | Se a regra está ativa. |
criteria | AzionFirewallCriteria[] | Não | Os critérios da regra. |
match | string | Não | Uma expressão de correspondência, a alternativa mais antiga a criteria. |
variable | string | Não | A variável à qual match se aplica. |
behaviors | AzionFirewallBehaviorItem[] | Sim | Os behaviors que a regra executa, em ordem. |
Critérios da regra de firewall
Cada critério de uma regra de firewall compara uma variável de firewall com um valor. As variáveis que uma regra de firewall aceita estão em Variáveis de regra de firewall.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
variable | string | Sim | A variável de firewall a avaliar, com ou sem ${}, como ${request_uri}. |
conditional | 'if' | 'and' | 'or' | Sim | Como o critério se une aos critérios anteriores. |
operator | string | Sim | O operador de comparação. |
argument | string | number | Sim, com um operador que recebe um valor | O valor a comparar. Omita-o com exists e does_not_exist. |
Behaviors da regra de firewall
Cada behavior de uma regra de firewall é um objeto com um type e, na maioria dos tipos, um objeto attributes.
type | attributes | Descrição |
|---|---|---|
deny | — | Nega a requisição. |
drop | — | Descarta a requisição. |
run_function | { value: string | number } | Executa a function que value indica, pelo nome ou ID. |
set_waf | { mode: 'learning' | 'blocking'; wafId: string | number } | Aplica o WAF que wafId indica, pelo nome ou ID, no modo que mode define. |
set_rate_limit | { type: 'second' | 'minute'; limitBy: 'client_ip' | 'global'; averageRateLimit: string; maximumBurstSize: string } | Limita a taxa de requisições por segundo ou por minuto, para cada IP de cliente ou para todos os clientes. |
set_custom_response | { statusCode: number | string; contentType: string; contentBody: string } | Retorna uma resposta com o status, o tipo de conteúdo e o corpo que você define. statusCode recebe um valor de 200 a 499. |
Function instances do firewall
Cada entrada do functionsInstances de um firewall vincula uma function ao firewall.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome da function instance. |
ref | string | number | Sim | A function, pelo nome em functions ou pelo ID. |
args | Record<string, string> | Não | Os argumentos desta instance. |
active | boolean | Não | Se a instance está ativa. |
networkList
Cada entrada de networkList declara uma network list.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome da network list. |
type | 'ip_cidr' | 'asn' | 'countries' | Sim | O tipo de item que a lista guarda. |
items | string[] | Sim | Os endereços IP ou intervalos CIDR, ASNs ou países da lista. |
active | boolean | Não | Se a network list está ativa. |
purge
Cada entrada de purge declara um purge de conteúdo em cache.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | 'url' | 'cachekey' | 'wildcard' | Sim | O tipo de purge. |
items | string[] | Sim | As URLs, cache keys ou expressões wildcard a purgar. |
layer | 'cache' | 'tiered_cache' | Não | A camada de cache a purgar. |
waf
Cada entrada de waf declara uma configuração do Web Application Firewall (WAF), que uma regra de firewall aplica com o behavior set_waf.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do WAF. |
productVersion | string | Não | A versão do produto. |
engineSettings.engineVersion | '2021-Q3' | Sim | A versão do engine. |
engineSettings.type | 'score' | Sim | O tipo do engine. |
engineSettings.attributes.rulesets | 1[] | Sim | Os rule sets. |
engineSettings.attributes.thresholds | WafThreshold[] | Sim | A sensibilidade para cada tipo de ameaça. |
Limiares de ameaça
Cada entrada de engineSettings.attributes.thresholds define quão sensível o WAF é a um tipo de ameaça. Para saber o que os níveis significam, consulte Score e modos.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
threat | 'cross_site_scripting' | 'directory_traversal' | 'evading_tricks' | 'file_upload' | 'identified_attack' | 'remote_file_inclusion' | 'sql_injection' | 'unwanted_access' | Sim | O tipo de ameaça. |
sensitivity | 'lowest' | 'low' | 'medium' | 'high' | 'highest' | Sim | O nível de sensibilidade. |
workloads
Cada entrada de workloads declara um workload, que serve uma aplicação nos seus domínios.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do workload. |
active | boolean | Não | Se o workload está ativo. |
infrastructure | 1 | 2 | Não | O tipo de infraestrutura: 1 para Standard, 2 para High Performance. |
domains | string[] | Não | Os domínios do workload. |
workloadDomainAllowAccess | boolean | Não | Se o domínio de workload que a Azion atribui também serve o workload. |
tls.certificate | number | null | Não | O ID do certificado. |
tls.ciphers | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | null | Não | A suíte de cifras. |
tls.minimumVersion | '' | 'tls_1_0' | 'tls_1_1' | 'tls_1_2' | 'tls_1_3' | null | Não | A versão mínima do TLS. |
protocols.http.versions | ('http1' | 'http2' | 'http3')[] | Sim | As versões de HTTP servidas. |
protocols.http.httpPorts | number[] | Sim | As portas HTTP. |
protocols.http.httpsPorts | number[] | Sim | As portas HTTPS. |
protocols.http.quicPorts | number[] | null | Não | As portas QUIC. |
mtls.enabled | boolean | Sim | Se o TLS mútuo (mTLS) está ligado. |
mtls.config.verification | 'enforce' | 'permissive' | Sim | O modo de verificação do mTLS. |
mtls.config.certificate | number | null | Não | O ID do certificado de CA confiável. |
mtls.config.crl | number[] | null | Não | Os IDs das listas de revogação de certificados. |
deployments | AzionWorkloadDeployment[] | Não | Os deployments do workload. |
Deployments do workload
Cada entrada do deployments de um workload define qual aplicação, firewall e custom page o workload serve.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do deployment. |
current | boolean | Não | Se este é o deployment atual. |
active | boolean | Não | Se o deployment está ativo. |
strategy.type | string | Sim | A estratégia do deployment. Os arquivos gerados usam default. |
strategy.attributes.application | string | number | Sim | A aplicação, pelo nome ou ID. |
strategy.attributes.firewall | string | number | null | Não | O firewall, pelo nome ou ID. |
strategy.attributes.customPage | string | number | null | Não | A custom page, pelo nome ou ID. |
customPages
Cada entrada de customPages declara um conjunto de custom pages, as páginas que a Azion retorna no lugar de uma resposta de erro.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do conjunto de custom pages. |
active | boolean | Não | Se o conjunto está ativo. |
pages | AzionCustomPageEntry[] | Sim | Uma entrada por código de erro. |
Entradas de custom page
Cada entrada do pages de um conjunto de custom pages associa um código de erro a uma página que um connector serve.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
code | string | Sim | O código de erro: 'default', '400', '401', '403', '404', '405', '406', '408', '409', '410', '411', '414', '415', '416', '426', '429', '431', '500', '501', '502', '503', '504' ou '505'. |
page.type | 'page_connector' | Não | O tipo de página. |
page.attributes.connector | string | number | Sim | O connector que serve a página, pelo nome ou ID. |
page.attributes.ttl | number | Não | Por quanto tempo a página fica em cache, em segundos. |
page.attributes.uri | string | null | Não | O caminho da página. |
page.attributes.customStatusCode | number | null | Não | O código de status retornado com a página. |
kv
Cada entrada de kv declara um namespace do KV Store.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | O nome do namespace. |
Variáveis de regra
As regras de aplicação e as regras de firewall avaliam conjuntos diferentes de variáveis nos seus critérios.
Variáveis de regra de aplicação
Um critério de regra de aplicação recebe sua variable envolvida em ${}, como ${uri}; o build recusa um nome sem ela. Estas variáveis estão disponíveis nas duas fases:
| Variável | Descrição |
|---|---|
args | Os argumentos da requisição. |
device_group | O device group. |
domain | O domínio. |
geoip_city | A cidade, pelo GeoIP. |
geoip_city_continent_code | O código do continente, pelo GeoIP. |
geoip_city_country_code | O código do país, pelo GeoIP. |
geoip_city_country_name | O nome do país, pelo GeoIP. |
geoip_continent_code | O código do continente. |
geoip_country_code | O código do país. |
geoip_country_name | O nome do país. |
geoip_region | A região, pelo GeoIP. |
geoip_region_name | O nome da região, pelo GeoIP. |
host | O host da requisição. |
network | A rede. |
remote_addr | O endereço IP remoto. |
remote_port | A porta remota. |
remote_user | O usuário remoto. |
request | A requisição completa. |
request_body | O corpo da requisição. |
request_method | O método HTTP. |
request_uri | A URI da requisição. |
scheme | O esquema, http ou https. |
uri | A URI. |
Estas variáveis estão disponíveis apenas na fase de requisição:
| Variável | Descrição |
|---|---|
server_addr | O endereço do servidor. |
server_port | A porta do servidor. |
ssl_client_cert | O certificado SSL do cliente. |
ssl_client_escaped_cert | O certificado SSL do cliente, escapado. |
ssl_client_fingerprint | A impressão digital do certificado SSL do cliente. |
ssl_client_i_dn | O DN do emissor do certificado SSL do cliente. |
ssl_client_s_dn | O DN do titular do certificado SSL do cliente. |
ssl_client_s_dn_parsed | O DN do titular, interpretado. |
ssl_client_serial | O número de série do certificado SSL do cliente. |
ssl_client_v_end | A data final da validade do certificado SSL do cliente. |
ssl_client_v_remain | Os dias restantes da validade do certificado SSL do cliente. |
ssl_client_v_start | A data inicial da validade do certificado SSL do cliente. |
ssl_client_verify | O status da verificação SSL. |
Estas variáveis estão disponíveis apenas na fase de resposta:
| Variável | Descrição |
|---|---|
sent_http_name | O nome HTTP enviado. |
status | O código de status HTTP. |
tcpinfo_rtt | O tempo de ida e volta do TCP. |
upstream_addr | O endereço do upstream. |
upstream_status | O status do upstream. |
Uma variável também pode indicar um argumento, um cookie ou um header específico, com um prefixo seguido do nome:
| Prefixo | Descrição |
|---|---|
arg_<name> | Um argumento da requisição. |
cookie_<name> | Um cookie. |
http_<name> | Um header HTTP da requisição. |
sent_http_<name> | Um header HTTP enviado. |
upstream_cookie_<name> | Um cookie do upstream. |
upstream_http_<name> | Um header HTTP do upstream. |
Variáveis de regra de firewall
Um critério de regra de firewall aceita seu próprio conjunto de 15 variáveis, com ou sem ${}: client_certificate_validation, header_accept, header_accept_encoding, header_accept_language, header_cookie, header_origin, header_referer, header_user_agent, host, network, request_args, request_method, request_uri, scheme e ssl_verification_status. O build recusa qualquer outra variável em uma regra de firewall, incluindo remote_addr e os nomes com prefixo.
Operadores de comparação
O operator de um critério de aplicação ou de firewall recebe um destes valores. Um operador que recebe um valor precisa de um argument:
| Operador | Recebe um valor | Descrição |
|---|---|---|
is_equal | Sim | É igual a. |
is_not_equal | Sim | Não é igual a. |
starts_with | Sim | Começa com. |
does_not_start_with | Sim | Não começa com. |
matches | Sim | Corresponde à expressão regular. |
does_not_match | Sim | Não corresponde à expressão regular. |
is_in_list | Sim | Está na lista. |
is_not_in_list | Sim | Não está na lista. |
exists | Não | Existe. |
does_not_exist | Não | Não existe. |
Exemplos
Os dois arquivos abaixo são o arquivo que azion init gera para um projeto de function e um arquivo escrito à mão para azion config apply.
Projeto de function gerado pelo azion init
azion init com o preset JavaScript escreve este azion.config.mjs. Ele declara uma function, uma aplicação cuja regra executa a function em toda requisição e um workload que serve a aplicação:
Depois do primeiro azion deploy, cada placeholder $ do arquivo guarda o nome do projeto, como my-function.
Configuração aplicada com azion config apply
Este azion.config.mjs declara uma aplicação com um cache setting e uma regra que o aplica, e um workload que serve a aplicação:
Execute azion config apply na pasta do projeto para criar os recursos que o arquivo declara:
O comando cria cada recurso e exibe o ID dele:
Executar azion config apply de novo com o mesmo arquivo atualiza os mesmos recursos: cada linha passa a dizer successfully updated e mantém o mesmo ID.
Migrar de uma configuração v3
Uma configuração escrita para a API v3 guarda seus recursos em chaves planas de primeiro nível, como origin, cache e rules. A configuração v4 move os cache settings e as regras para dentro de cada aplicação, substitui as origens por connectors e adiciona workloads para servir as aplicações. Para as mudanças da plataforma por trás da estrutura v4, consulte Migração para API v4.
Chaves renomeadas
Esta tabela associa cada chave v3 ao seu lugar na v4:
| Chave v3 | Chave v4 | O que mudou |
|---|---|---|
origin | connectors | Uma origem passa a ser um connector com um type e um objeto attributes. |
cache | applications[].cache | Os cache settings pertencem a uma aplicação. |
rules | applications[].rules | As regras pertencem a uma aplicação e recebem criteria e behaviors. |
networkLists | networkList | A chave fica no singular, e cada lista recebe name, type e items no lugar de id, listType e listContent. |
build.builder | build.bundler | Os mesmos valores, esbuild ou webpack. |
build.custom | build.extend | Uma função que estende a configuração do bundler substitui o objeto de configuração personalizada. |
purge[].urls | purge[].items | A propriedade method deixa de existir, e layer recebe cache ou tiered_cache no lugar de edge_caching ou l2_caching. |
cacheByCookie.option, cacheByQueryString.option | Iguais | Os valores são ignore, all, allowlist e denylist no lugar de ignore, varies, whitelist e blacklist. |
inputValue nos critérios de firewall | argument | Mesmo significado. |
edgeFunctions no firewall | functions | Mesmo significado. |
behavior na regra de firewall | behaviors | Um array de objetos { type, attributes } substitui um único objeto. |
limitBy e type do rate limit | Iguais | limitBy recebe client_ip ou global, sem token; type recebe second ou minute, sem hour. |
mode e configurações de ameaça do WAF | engineSettings | Limiares por ameaça substituem os objetos por ameaça; o modo passa para o behavior set_waf da regra de firewall. |
De origens para connectors
Uma origem v3 declarava seus endereços diretamente:
O connector v4 guarda os endereços, as opções de conexão e os modules dentro de attributes:
Regras com critérios
Uma regra v3 correspondia a uma expressão e executava um objeto de behavior:
A regra v4 fica dentro de uma aplicação, faz a correspondência com grupos de critérios e executa um array de behaviors:
Behaviors de firewall
Uma regra de firewall v3 executava um objeto de behavior:
A regra de firewall v4 recebe um array, então uma regra pode executar vários behaviors:
Configurações do WAF
Um WAF v3 definia um modo e um objeto de sensibilidade por ameaça:
O WAF v4 lista um limiar por ameaça em engineSettings, e a regra de firewall que o aplica define o modo: