Azion IaC
Aprenda como personalizar as configurações da sua application usando o arquivo azion.config.js. Esta documentação fornece explicações detalhadas das propriedades de configuração.
O arquivo azion.config.js é um arquivo de configuração de IaC criado durante o processo de build da aplicação, com base no preset selecionado, e serve como a fonte de verdade para a configuração. Cada preset fornece um conjunto de configurações padrão, que podem ser substituídas pelo usuário. Se o arquivo for excluído, a configuração padrão será recriada na próxima vez que o processo de build for disparado.
As configurações definidas por este arquivo incluem:
- Build Configurations
- Origins
- Cache Settings
- Rules Engine
- Network List
- Purge Settings
- Firewall Settings
- WAF Settings
- Build Configurations
- Workloads
- Connectors
- Applications
- Cache Settings
- Rules Engine
- Network List
- Purge Settings
- Firewall Settings
- WAF Settings
- Custom Pages
- KV Store
Referência da API
defineConfig
Configura e valida as opções para a Application.
Parâmetros:
config: AzionConfig- Objeto de configuração para Applications.
Tipos
AzionConfig
Propriedades:
build?: AzionBuild- A configuração de build.domain?: AzionDomain- O objeto domínio.origin?: AzionOrigin[]- Lista de origens.cache?: AzionCache[]- Lista de configurações de cache.rules?: AzionRules[]- Lista de regras de application.purge?: AzionPurge[]- List de URLs ou CacheKeys to purge.networkLists?: AzionNetworkList[]- Lista de network lists.waf?: AzionWaf[]- Lista de configurações do WAF.
AzionBuild
A definição de tipos para a configuração de build.
Propriedades:
builder?: 'esbuild' | 'webpack'- O builder a ser utilizado.preset?: string- O preset a ser utilizado.entry?: string- O arquivo de entrada.polyfills?: boolean- Se deve utilizar Polyfillsworker?: boolean- Se deve realizar o build de um worker.custom?: Record<string, any>- Configurações customizadas de build.memoryFS?: { injectionDirs: string[], removePathPrefix: string }- Configuração do sistema de arquivos em memória.
AzionDomain
Definição de tipo para a configuração de domínio.
Propriedades:
name: string- O nome do domínio.cnameAccessOnly?: boolean- Se deve restringir o acesso apenas a CNAMEs.cnames?: string[]- Lista de CNAMEs para o domínio.id?: number- ID do domínio.edgeApplicationId?: number- ID da application.edgeFirewallId?: number- ID do firewall.digitalCertificateId?: string | number | null- ID do certificado digital.active?: boolean- Se o domínio está ativo.mtls?: MTLSConfig- Configuração para mTLS.verification: 'enforce' | 'permissive'- Modo de verificação mTLS.trustedCaCertificateId: number- ID do certificado trusted CA.crlList?: number[]- Lista de Certificate Revocation Lists (CRLs).
AzionOrigin
Definição de tipo para a configuração de origem.
Propriedades:
id?: number- ID da origem.key?: string- Chave para a origem.name: string- Nome da origem.type: string- Tipo da origem. Por exemplo: ‘single_origin’, ‘load_balancer’.bucket?: string | null- Nome do bucket para origens de armazenamento.prefix?: string | null- Pefixo para origens de armazenamento.addresses?: (string | { address: string; weight?: number })[]- Array de endereços para a origem.hostHeader?: string- Header de host customizado.protocolPolicy?: 'http' | 'https' | 'preserve'- Política de protocolo para a origem.redirection?: boolean- Se deve ativar redirecionamento.method?: 'ip_hash' | 'least_connections' | 'round_robin'- Método de balanceamento de carga.path?: string- Caminho para a origem.connectionTimeout?: number- Timeout de conexão em segundos.timeoutBetweenBytes?: number- Timeout entre bytes em segundos.hmac?: { region: string; accessKey: string; secretKey: string }- Configuração de HMAC para a origem.
AzionCache
Definição de tipo para a configuração de cache.
Propriedades:
name: string- Nome da configuração de cache.stale?: boolean- Se deve permitir conteúdo stale.queryStringSort?: boolean- Se os parâmetros da string de consulta devem ser ordenados.methods?: CacheMethods- HTTP a serem armazenados em cache.post?: boolean- Se deve armazenar em cache requisições do tipo POST.options?: boolean- Se deve armazenar em cache requisições do tipo OPTIONS.
browser?: BrowserCacheConfig- Configurações de cache do browser.maxAgeSeconds: number | string- Validade máxima em segundos para o cache do browser.
edge?: EdgeCacheConfig- Configurações do Cache.maxAgeSeconds: number | string- Validade máxima em segundos para o Cache.
cacheByCookie?: CacheByCookieConfig- Cache com base nas configurações de cookies.option: 'ignore' | 'varies' | 'whitelist' | 'blacklist'- Opção de cache por cookie.list?: string[]- Lista de cookies a serem usados para cache.
cacheByQueryString?: CacheByQueryStringConfig- Cache com base nas configurações de query string.option: 'ignore' | 'varies' | 'whitelist' | 'blacklist'- Opção de cache por query string.list?: string[]- Lista de Parâmetros query string a serem utilizados para cache.
AzionRequestRule
Definição de tipo para a configuração da regra de requisição.
Propriedades:
name: string- Nome da regra de requisição.description?: string- Descrição da regra de requisição.active?: boolean- Se a regra está ativa.match: string- Critérios de correspondência para a regra.variable?: string- Variável a ser usada na correspondência.behavior?: RequestBehavior- Comportamento a ser aplicado quando a regra for correspondida.setOrigin?: { name: string; type: string }- Definir uma nova origem.rewrite?: string- Reescrever a requisição.setHeaders?: string[]- Definir cabeçalhos.bypassCache?: boolean | null- Ignorar cache.httpToHttps?: boolean | null- Forçar HTTPS.redirectTo301?: string | null- Redirecionar com status 301.redirectTo302?: string | null- Redirecionar com status 302.forwardCookies?: boolean | null- Encaminhar cookies.setCookie?: string | null- Definir um cookie.deliver?: boolean | null- Entregar o conteúdo.capture?: { match: string; captured: string; subject: string }- Configuração de captura.runFunction?: { path: string; name?: string | null }- Executar uma função serverless.setCache?: string | { name: string; browser_cache_settings_maximum_ttl?: number | null; cdn_cache_settings_maximum_ttl?: number | null }- Configuração de cache.
AzionResponseRule
Definição de tipo para a configuração da regra de resposta.
Propriedades:
name: string- Nome da regra de resposta.description?: string- Descrição da regra de resposta.active?: boolean- Se a regra está ativa.match: string- Critérios de correspondência para a regra.variable?: string- Variável a ser usada na correspondência.behavior?: ResponseBehavior- Comportamento a ser aplicado quando a regra for correspondida.setCookie?: string | null- Definir um cookie.setHeaders?: string[]- Definir cabeçalhos.deliver?: boolean | null- Entregar o conteúdo.capture?: { match: string; captured: string; subject: string }- Configuração de captura.enableGZIP?: boolean | null- Habilitar compressão GZIP.filterCookie?: string | null- Filtrar um cookie.filterHeader?: string | null- Filtrar um cabeçalho.runFunction?: { path: string; name?: string | null }- Executar uma função sem servidor.redirectTo301?: string | null- Redirecionar com status 301.redirectTo302?: string | null- Redirecionar com status 302.
AzionRules
Definição de tipo para o conjunto de regras.
Propriedades:
request: AzionRequestRule[]- Conjunto de regras para a fase de requisição.response?: AzionResponseRule[]- Conjunto de regras para a fase de resposta.
AzionPurge
Definição de tipo para a configuração de purge.
Propriedades:
type: 'url' | 'cachekey' | 'wildcard'- O tipo de purge a ser realizado.urls: string[]- Lista de URLs que passarão por purge.method?: 'delete'- Método HTTP para a requisição de purge.layer?: 'edge_caching' | 'l2_caching'- Camada de cache para realizar o purge.
AzionNetworkList
Definição de tipo para a configuração da network list.
Propriedades:
id: number- ID da network list.listType: 'ip_cidr' | 'asn' | 'countries'- Tipo da network list.listContent: string[] | number[]- Lista de IP CIDRs, ASNs, ou países.
AzionFirewall
Definição de tipo para a configuração do Firewall.
Propriedades:
name: string- Nome do firewall.domains?: string[]- Lista de domínios associados ao firewall.active?: boolean- Se o firewall está ativo.edgeFunctions?: boolean- Se as Functions estão habilitadas.networkProtection?: boolean- Se a proteção de rede está habilitada.waf?: boolean- Se o WAF está habilitado.variable?: RuleVariable- Variável a ser usada nas correspondências.rules?: AzionFirewallRule[]- Lista de regras do firewall.debugRules?: boolean- Se o modo de depuração está habilitado para as regras.
AzionFirewallRule
Definição de tipo para as regras do firewall.
Propriedades:
name: string- Nome da regra.description?: string- Descrição da regra.active?: boolean- Se a regra está ativa.match?: string- Critérios de correspondência para a regra.variable?: RuleVariable- Variável a ser usada na correspondência.criteria?: AzionFirewallCriteria[]- Array de critérios para condições complexas.behavior: AzionFirewallBehavior- Comportamento a ser aplicado quando a regra for correspondida.
AzionFirewallBehavior
Definição de tipo para os comportamentos das regras do firewall.
Propriedades:
runFunction?: { path: string }- Executar uma function.setWafRuleset?: { wafMode: FirewallWafMode; wafId: string }- Definir o conjunto de regras WAF.setRateLimit?:- Definir a configuração de limite de taxa.type: FirewallRateLimitType- Tipo de limite de taxa (segundo, minuto, hora).limitBy: FirewallRateLimitBy- Limitar por (client_ip, global, token).averageRateLimit: string- Limite médio de taxa.maximumBurstSize: string- Tamanho máximo do pico.
deny?: boolean- Negar a requisição.drop?: boolean- Descartar a requisição.setCustomResponse?:- Definir resposta personalizada.statusCode: number | string- Código de status HTTP (200-499).contentType: string- Tipo de conteúdo da resposta.contentBody: string- Corpo do conteúdo da resposta.
AzionFirewallCriteria
Definição de tipo para os critérios das regras do firewall.
Propriedades:
variable: RuleVariable- Variável a ser avaliada.conditional: RuleConditional- Tipo de condicional.operator: RuleOperatorWithValue | RuleOperatorWithoutValue- Operador de comparação.inputValue?: string- Valor de entrada para comparação (obrigatório para operadores com valor).
AzionWaf
Definição de tipo para a configuração do Web Application Firewall (WAF).
Propriedades:
id?: number- ID do WAF.name: string- Nome do WAF.active: boolean- Se o WAF está ativo.mode: WafMode- Modo do WAF (learning, blocking, counting).sqlInjection?: object- Configurações de SQL Injection.sensitivity: string- Nível de sensibilidade (low, medium, high).
remoteFileInclusion?: object- Configurações de Remote File Inclusion.sensitivity: string- Nível de sensibilidade (low, medium, high).
directoryTraversal?: object- Configurações de Directory Traversal.sensitivity: string- Nível de sensibilidade (low, medium, high).
crossSiteScripting?: object- Configurações de Cross-Site Scripting.sensitivity: string- Nível de sensibilidade (low, medium, high).
evadingTricks?: object- Configurações de Evading Tricks.sensitivity: string- Nível de sensibilidade (low, medium, high).
fileUpload?: object- Configurações de File Upload.sensitivity: string- Nível de sensibilidade (low, medium, high).
unwantedAccess?: object- Configurações de Unwanted Access.sensitivity: string- Nível de sensibilidade (low, medium, high).
identifiedAttack?: object- Configurações de Identified Attack.sensitivity: string- Nível de sensibilidade (low, medium, high).
bypassAdresses?: string[]- Lista de endereços IP para ignorar o WAF.
AzionConfig
Propriedades:
build?: AzionBuild- A configuração de build.workloads?: AzionWorkload[]- Lista de workloads.connectors?: AzionConnector[]- Lista de connectors.applications?: AzionApplication[]- Lista de applications.functions?: AzionFunction[]- Lista de functions.storage?: AzionBucket[]- Lista de configurações de storage.firewall?: AzionFirewall[]- Lista de configurações do firewall.networkList?: AzionNetworkList[]- Lista de network lists.purge?: AzionPurge[]- Lista de URLs ou CacheKeys para purge.waf?: AzionWaf[]- Lista de configurações do WAF.customPages?: AzionCustomPage[]- Lista de custom pages.kv?: AzionKV[]- Lista de configurações do KV Store.
AzionBuild
A definição de tipos para a configuração de build.
Propriedades:
bundler?: 'esbuild' | 'webpack'- O bundler a ser utilizado.preset?: string | AzionBuildPreset- O preset a ser utilizado (string ou objeto de preset customizado).entry?: string | string[] | Record<string, string>- O arquivo de entrada.polyfills?: boolean- Se deve utilizar Polyfills.worker?: boolean- Se deve realizar o build de um worker.extend?: (context: WebpackConfig | ESBuildConfig) => WebpackConfig | ESBuildConfig- Função para estender a configuração do bundler.memoryFS?: { injectionDirs: string[], removePathPrefix: string }- Configuração do sistema de arquivos em memória.
AzionBuildPreset
Definição de tipo para preset customizado de build.
Propriedades:
config: AzionConfig- Configuração do preset.handler?: AzionRuntimeModule- Handler customizado.prebuild?: (config: BuildConfiguration, ctx: BuildContext) => Promise<void | AzionPrebuildResult>- Função executada antes do build.postbuild?: (config: BuildConfiguration, ctx: BuildContext) => Promise<void>- Função executada após o build.metadata: PresetMetadata- Metadados do preset.
AzionWorkload
Definição de tipo para a configuração de workload.
Propriedades:
name: string- Nome do workload.active?: boolean- Se o workload está ativo.infrastructure?: 1 | 2- Tipo de infraestrutura (1 = Standard, 2 = High Performance).tls?: AzionWorkloadTLS- Configuração de TLS.certificate?: number | null- ID do certificado.ciphers?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8- Configuração de cifras.minimumVersion?: '' | 'tls_1_0' | 'tls_1_1' | 'tls_1_2' | 'tls_1_3'- Versão mínima do TLS.
protocols?: AzionWorkloadProtocols- Configuração de protocolos.http: { versions: ('http1' | 'http2' | 'http3')[], httpPorts: number[], httpsPorts: number[], quicPorts?: number[] | null }- Configuração HTTP.
mtls?: AzionWorkloadMTLS- Configuração de mTLS.enabled: boolean- Se mTLS está habilitado.config: { verification: 'enforce' | 'permissive', certificate?: number | null, crl?: number[] | null }- Configuração mTLS.
domains?: string[]- Lista de domínios associados.workloadDomainAllowAccess?: boolean- Se permite acesso via domínio do workload.deployments?: AzionWorkloadDeployment[]- Lista de deployments.name: string- Nome do deployment.current?: boolean- Se é o deployment atual.active?: boolean- Se está ativo.strategy: AzionWorkloadDeploymentStrategy- Estratégia de deployment.
AzionConnector
Definição de tipo para connectors (união de tipos).
Tipos disponíveis:
AzionConnectorHttp- Connector HTTP.AzionConnectorStorage- Connector de Object Storage.AzionConnectorLiveIngest- Connector de Live Ingest.
AzionConnectorHttp
Definição de tipo para connector HTTP.
Propriedades:
name: string- Nome do connector.active?: boolean- Se o connector está ativo.type: 'http'- Tipo do connector.attributes: ConnectorHttpAttributes- Atributos do connector.addresses: ConnectorAddress[]- Lista de endereços.address: string- Endereço IP ou CNAME.active?: boolean- Se o endereço está ativo.httpPort?: number- Porta HTTP.httpsPort?: number- Porta HTTPS.
connectionOptions: ConnectorConnectionOptions- Opções de conexão.dnsResolution?: 'both' | 'force_ipv4'- Política de resolução DNS.transportPolicy?: 'preserve' | 'force_https' | 'force_http'- Política de transporte.httpVersionPolicy?: 'http1_1'- Política de versão HTTP.host?: string- Host customizado.pathPrefix?: string- Prefixo de caminho.followingRedirect?: boolean- Seguir redirecionamentos.
modules?: ConnectorModules- Módulos do connector.loadBalancer: { enabled: boolean, config: LoadBalancerConfig | null }- Configuração de load balancer.originShield: { enabled: boolean, config: OriginShieldConfig | null }- Configuração de origin shield.
AzionConnectorStorage
Definição de tipo para connector de Object Storage.
Propriedades:
name: string- Nome do connector.active?: boolean- Se o connector está ativo.type: 'storage'- Tipo do connector.attributes: ConnectorStorageAttributes- Atributos do connector.bucket: string- Nome do bucket.prefix?: string- Prefixo para os objetos.
AzionApplication
Definição de tipo para a configuração da application.
Propriedades:
name: string- Nome da application.active?: boolean- Se a application está ativa.edgeCacheEnabled?: boolean- Se o cache está habilitado.functionsEnabled?: boolean- Se as Functions estão habilitadas.applicationAcceleratorEnabled?: boolean- Se o Application Accelerator está habilitado.imageProcessorEnabled?: boolean- Se o Image Processor está habilitado.debug?: boolean- Se o modo debug está habilitado.cache?: AzionCache[]- Lista de configurações de cache.rules?: AzionRules- Configuração de regras.deviceGroups?: AzionDeviceGroup[]- Lista de device groups.functionsInstances?: AzionFunctionInstance[]- Lista de instâncias de functions.
AzionCache
Definição de tipo para a configuração de cache.
Propriedades:
name: string- Nome da configuração de cache.stale?: boolean- Se deve permitir conteúdo stale.queryStringSort?: boolean- Se os parâmetros da string de consulta devem ser ordenados.tieredCache?: { enabled: boolean, topology?: 'nearest-region' | 'br-east-1' | 'us-east-1' }- Configuração de Tiered Cache.methods?: { post?: boolean, options?: boolean }- HTTP methods a serem armazenados em cache.browser?: { maxAgeSeconds: number | string }- Configurações de cache do browser.edge?: { maxAgeSeconds: number | string }- Configurações do Cache.cacheByCookie?: { option: 'ignore' | 'all' | 'allowlist' | 'denylist', list?: string[] }- Cache com base nas configurações de cookies.cacheByQueryString?: { option: 'ignore' | 'all' | 'allowlist' | 'denylist', list?: string[] }- Cache com base nas configurações de query string.
AzionRules
Definição de tipo para o conjunto de regras.
Propriedades:
request?: AzionRequestRule[]- Conjunto de regras para a fase de requisição.response?: AzionResponseRule[]- Conjunto de regras para a fase de resposta.
AzionRequestRule
Definição de tipo para a configuração da regra de requisição.
Propriedades:
name: string- Nome da regra de requisição.description?: string- Descrição da regra de requisição.active?: boolean- Se a regra está ativa.match?: string- Critérios de correspondência para a regra (formato legado).variable?: RuleVariable- Variável a ser usada na correspondência (formato legado).criteria?: AzionRuleCriteria[]- Array de critérios para condições complexas (formato novo).behavior?: object- Comportamento a ser aplicado quando a regra for correspondida.rewrite?: string- Reescrever a requisição.bypassCache?: boolean | null- Ignorar cache.httpToHttps?: boolean | null- Forçar HTTPS.redirectTo301?: string | null- Redirecionar com status 301.redirectTo302?: string | null- Redirecionar com status 302.forwardCookies?: boolean | null- Encaminhar cookies.setCookie?: string | null- Definir um cookie.deliver?: boolean | null- Entregar o conteúdo.deny?: boolean | null- Negar a requisição.noContent?: boolean | null- Retornar sem conteúdo.enableGZIP?: boolean | null- Habilitar compressão GZIP.filterCookie?: string | null- Filtrar um cookie.filterHeader?: string | null- Filtrar um cabeçalho.optimizeImages?: boolean | null- Otimizar imagens.capture?: { match: string, captured: string, subject: string }- Configuração de captura.runFunction?: string | number- Executar uma function (nome ou ID).setCache?: string | number | { name: string | number, browser_cache_settings_maximum_ttl?: number | null, cdn_cache_settings_maximum_ttl?: number | null }- Configuração de cache.finishRequestPhase?: boolean- Finalizar fase de requisição.setConnector?: string | number- Definir connector (nome ou ID).addRequestHeader?: string[]- Adicionar headers na requisição.addRequestCookie?: string- Adicionar cookie na requisição.filterRequestCookie?: string- Filtrar cookie da requisição.
AzionResponseRule
Definição de tipo para a configuração da regra de resposta.
Propriedades:
name: string- Nome da regra de resposta.description?: string- Descrição da regra de resposta.active?: boolean- Se a regra está ativa.match?: string- Critérios de correspondência para a regra (formato legado).variable?: RuleVariable- Variável a ser usada na correspondência (formato legado).criteria?: AzionRuleCriteria[]- Array de critérios para condições complexas (formato novo).behavior?: object- Comportamento a ser aplicado quando a regra for correspondida.setHeaders?: string[]- Definir cabeçalhos.deliver?: boolean | null- Entregar o conteúdo.capture?: { match: string, captured: string, subject: string }- Configuração de captura.enableGZIP?: boolean | null- Habilitar compressão GZIP.filterHeader?: string | null- Filtrar um cabeçalho.runFunction?: string | number- Executar uma function (nome ou ID).redirectTo301?: string | null- Redirecionar com status 301.redirectTo302?: string | null- Redirecionar com status 302.addResponseHeader?: string[]- Adicionar headers na resposta.filterResponseCookie?: string- Filtrar cookie da resposta.
AzionRuleCriteria
Definição de tipo para critérios de regras.
Propriedades:
variable: RuleVariable- Variável a ser avaliada.conditional: 'if' | 'and' | 'or'- Tipo de condicional.operator: RuleOperatorWithValue | RuleOperatorWithoutValue- Operador de comparação.argument?: string- Valor de entrada para comparação (obrigatório para operadores com valor).
AzionPurge
Definição de tipo para a configuração de purge.
Propriedades:
type: 'url' | 'cachekey' | 'wildcard'- O tipo de purge a ser realizado.items: string[]- Lista de itens que passarão por purge.layer?: 'cache' | 'tiered_cache'- Camada de cache para realizar o purge.
AzionNetworkList
Definição de tipo para a configuração da network list.
Propriedades:
name: string- Nome da network list.type: 'ip_cidr' | 'asn' | 'countries'- Tipo da network list.items: string[]- Lista de IP CIDRs, ASNs, ou países.active?: boolean- Se a network list está ativa.
AzionFirewall
Definição de tipo para a configuração do Firewall.
Propriedades:
name: string- Nome do firewall.active?: boolean- Se o firewall está ativo.functions?: boolean- Se as Functions estão habilitadas.networkProtection?: boolean- Se a proteção de rede está habilitada.waf?: boolean- Se o WAF está habilitado.rules?: AzionFirewallRule[]- Lista de regras do firewall.debugRules?: boolean- Se o modo de depuração está habilitado para as regras.functionsInstances?: AzionFirewallFunctionsInstance[]- Lista de instâncias de functions do firewall.
AzionFirewallRule
Definição de tipo para as regras do firewall.
Propriedades:
name: string- Nome da regra.description?: string- Descrição da regra.active?: boolean- Se a regra está ativa.match?: string- Critérios de correspondência para a regra (formato legado).variable?: RuleVariable- Variável a ser usada na correspondência (formato legado).criteria?: AzionFirewallCriteria[]- Array de critérios para condições complexas (formato novo).behaviors: AzionFirewallBehavior- Array de comportamentos a serem aplicados quando a regra for correspondida.
AzionFirewallBehavior
Definição de tipo para os comportamentos das regras do firewall (array de comportamentos).
Tipos de comportamento disponíveis:
{ runFunction: string | number }- Executar uma function (nome ou ID).{ setWafRuleset: { wafMode: 'learning' | 'blocking', wafId: string | number } }- Definir o conjunto de regras WAF.{ setRateLimit: { type: 'second' | 'minute', limitBy: 'clientIp' | 'global', averageRateLimit: string, maximumBurstSize: string } }- Definir a configuração de limite de taxa.{ deny: true }- Negar a requisição.{ drop: true }- Descartar a requisição.{ setCustomResponse: { statusCode: number | string, contentType: string, contentBody: string } }- Definir resposta personalizada.
AzionFirewallCriteria
Definição de tipo para os critérios das regras do firewall.
Propriedades:
variable: RuleVariable- Variável a ser avaliada.conditional: 'if' | 'and' | 'or'- Tipo de condicional.operator: RuleOperatorWithValue | RuleOperatorWithoutValue- Operador de comparação.argument?: string | number- Valor de entrada para comparação (obrigatório para operadores com valor).
AzionWaf
Definição de tipo para a configuração do Web Application Firewall (WAF).
Propriedades:
name: string- Nome do WAF.productVersion?: string- Versão do produto.engineSettings: WafEngineSettings- Configurações do motor do WAF.engineVersion: '2021-Q3'- Versão do motor.type: 'score'- Tipo do motor.attributes: WafEngineAttributes- Atributos do motor.rulesets: 1[]- Conjuntos de regras.thresholds: WafThreshold[]- Limiares de ameaças.threat: 'cross_site_scripting' | 'directory_traversal' | 'evading_tricks' | 'file_upload' | 'identified_attack' | 'remote_file_inclusion' | 'sql_injection' | 'unwanted_access'- Tipo de ameaça.sensitivity: 'lowest' | 'low' | 'medium' | 'high' | 'highest'- Nível de sensibilidade.
AzionFunction
Definição de tipo para a configuração de Function.
Propriedades:
name: string- Nome da function.path: string- Caminho do arquivo da function.runtime?: 'azion_js'- Ambiente de runtime.defaultArgs?: Record<string, unknown>- Argumentos padrão a serem passados para a function.executionEnvironment?: 'application' | 'firewall'- Ambiente de execução.active?: boolean- Se a function está ativa.bindings?: AzionFunctionBindings- Bindings da function.storage?: AzionStorageBinding- Binding de storage.bucket: string- Nome ou ID do bucket.prefix?: string- Prefixo do storage.
AzionFunctionInstance
Definição de tipo para instância de Function dentro de uma Application.
Propriedades:
name: string- Nome da instância.ref: string | number- Referência ao nome ou ID da Function.args?: Record<string, unknown>- Argumentos específicos da instância.active?: boolean- Se a instância está ativa.
AzionCustomPage
Definição de tipo para custom pages.
Propriedades:
name: string- Nome da custom page.active?: boolean- Se está ativa.pages: AzionCustomPageEntry[]- Array de configurações de páginas de erro.code: 'default' | '400' | '401' | '403' | '404' | '405' | '406' | '408' | '409' | '410' | '411' | '414' | '415' | '416' | '426' | '429' | '431' | '500' | '501' | '502' | '503' | '504' | '505'- Código de erro.page: AzionCustomPageConnector- Configuração da página.type?: 'page_connector'- Tipo da página.attributes: AzionCustomPageConnectorAttributes- Atributos da página.connector: string | number- Nome ou ID do connector.ttl?: number- Tempo de vida em segundos.uri?: string | null- Caminho URI.customStatusCode?: number | null- Código de status customizado.
AzionKV
Definição de tipo para KV Store.
Propriedades:
name: string- Nome do KV Store.
AzionBucket
Definição de tipo para configuração de Storage.
Propriedades:
name: string- Nome do storage.workloadsAccess?: 'read_only' | 'read_write' | 'restricted'- Tipo de acesso.dir: string- Diretório do storage.prefix: string- Prefixo do storage.
Exemplo
Aqui está um exemplo de implementação do arquivo azion.config.js:
Aqui está um exemplo de implementação do arquivo azion.config.js usando a nova estrutura V4:
Variáveis de Regras
As seguintes variáveis podem ser usadas nas regras de Applications e Firewall:
Variáveis Comuns (Request e Response)
args- Argumentos da requisiçãodevice_group- Grupo do dispositivodomain- Domíniogeoip_city- Cidade (GeoIP)geoip_city_continent_code- Código do continente (GeoIP)geoip_city_country_code- Código do país (GeoIP)geoip_city_country_name- Nome do país (GeoIP)geoip_continent_code- Código do continentegeoip_country_code- Código do paísgeoip_country_name- Nome do paísgeoip_region- Região (GeoIP)geoip_region_name- Nome da região (GeoIP)host- Host da requisiçãoremote_addr- Endereço IP remotoremote_port- Porta remotaremote_user- Usuário remotorequest- Requisição completarequest_body- Corpo da requisiçãorequest_method- Método HTTPrequest_uri- URI da requisiçãoscheme- Esquema (http/https)uri- URInetwork- Rede
Variáveis Específicas de Request
server_addr- Endereço do servidorserver_port- Porta do servidorssl_client_fingerprint- Fingerprint do certificado SSLssl_client_escaped_cert- Certificado SSL escapadossl_client_s_dn- Subject DN do certificado SSLssl_client_s_dn_parsed- Subject DN parseadossl_client_cert- Certificado SSL do clientessl_client_i_dn- Issuer DN do certificado SSLssl_client_serial- Número de série do certificado SSLssl_client_v_end- Data de validade do certificado SSLssl_client_v_remain- Dias restantes do certificado SSLssl_client_v_start- Data de início do certificado SSLssl_client_verify- Status de verificação do SSL
Variáveis Específicas de Response
sent_http_name- Nome HTTP enviadostatus- Código de status HTTPtcpinfo_rtt- Round-trip time TCPupstream_addr- Endereço upstreamupstream_status- Status upstream
Variáveis Dinâmicas
Você também pode usar variáveis dinâmicas com os prefixos:
arg_{name}- Argumentos específicoscookie_{name}- Cookies específicoshttp_{name}- Headers HTTP específicossent_http_{name}- Headers HTTP enviadosupstream_cookie_{name}- Cookies upstreamupstream_http_{name}- Headers HTTP upstream
Operadores de Comparação
Operadores com Valor
is_equal- É igual ais_not_equal- Não é igual astarts_with- Começa comdoes_not_start_with- Não começa commatches- Corresponde (regex)does_not_match- Não corresponde (regex)is_in_list- Está na listais_not_in_list- Não está na lista
Operadores sem Valor
exists- Existedoes_not_exist- Não existe
Migração de V3 para V4
Se você está migrando de uma versão anterior, aqui estão as principais mudanças:
Nomenclatura Atualizada
Edge Application→ApplicationEdge Functions→FunctionsEdge Firewall→FirewallEdge SQL→SQL DatabaseEdge Cache→CacheEdge Storage→Object StorageNetwork Layer Protection→Network ShieldEdge KV→KV StoreEdge Connectors→ConnectorsOrigin→Connector(novo conceito mais flexível)
Estrutura de Configuração
A estrutura mudou de uma configuração plana para uma estrutura hierárquica:
V3 (anterior):
V4 (atual):
Origens para Connectors
O conceito de origin evoluiu para connectors, oferecendo mais flexibilidade:
V3 (anterior):
V4 (atual):
Regras com Critérios
As regras agora suportam uma estrutura de critérios mais poderosa:
V3 (anterior):
V4 (atual):
Comportamentos de Firewall
Os comportamentos de firewall agora são um array, permitindo múltiplas ações:
V3 (anterior):
V4 (atual):
WAF com Thresholds
O WAF agora usa uma estrutura de thresholds mais granular:
V3 (anterior):
V4 (atual):
Notas Adicionais
Validação de Configuração
O defineConfig valida automaticamente sua configuração e fornece erros claros se houver problemas. Use TypeScript para obter autocompletar e verificação de tipos em tempo de desenvolvimento.
Referências por Nome ou ID
Muitas propriedades aceitam tanto nomes quanto IDs, permitindo que você use referências mais legíveis:
Presets Customizados
Você pode criar presets customizados para reutilizar configurações:
Integração com CLI
O arquivo azion.config.js é automaticamente detectado pela Azion CLI. Você pode:
- Usar
azion buildpara construir seu projeto com as configurações definidas - Usar
azion deploypara implantar sua application - Usar
azion devpara desenvolvimento local com hot reload
Recursos Relacionados
- Functions - Compute serverless na Azion Platform
- Applications - Configure e gerencie suas applications
- Firewall - Proteja suas applications
- WAF - Web Application Firewall
- Cache - Configure políticas de cache
- Object Storage - Armazenamento de objetos