Configurações de workload
Consulte cada campo de um workload, com tipo, padrão e valores aceitos, da infraestrutura e dos domínios a TLS, portas e mTLS.
Um workload é o objeto que recebe o tráfego de um conjunto de domínios. Ele carrega os domínios, a infraestrutura em que roda, as versões de HTTP e as portas, as configurações de TLS e o mTLS. Um subobjeto do workload, o deployment, nomeia a aplicação, o firewall e o conjunto de custom pages que atendem esse tráfego. Esta página lista cada campo dos dois objetos pelo nome na API, com o controle do Console ao lado. Para os limites numéricos em um só lugar, consulte Limites de Workloads. Para o caminho que uma requisição percorre por esses objetos, consulte Como Workloads funciona.
Interfaces
Quatro interfaces escrevem os mesmos dois objetos. As tabelas desta página nomeiam o controle do Console, o campo da API e a flag da CLI de cada campo.
| Interface | Criar | Ler, atualizar, excluir |
|---|---|---|
| Azion Console | O menu Workloads e, em seguida, a página Create Workload em /workloads/create, com as seções Infrastructure, Domains, Protocol Settings e Deployment Settings | A página Edit Workload carrega as mesmas seções; sua seção Deployment Settings edita o deployment |
| Azion API v4 | POST /v4/workspace/workloads; POST /v4/workspace/workloads/{workload_id}/deployments para o deployment | GET, PUT, PATCH e DELETE /v4/workspace/workloads/{workload_id}; GET /v4/workspace/workloads lista todos. GET /v4/workspace/workloads/{workload_id}/deployments lista o deployment, e PATCH /v4/workspace/workloads/{workload_id}/deployments/{deployment_id} o altera |
| Azion CLI | azion create workload e azion create workload-deployment | azion describe workload, azion update workload --file e azion list workload-deployment |
| Terraform | Os recursos azion_workload e azion_workload_deployment | Os mesmos recursos |
azion create workload define name e active por flags; todos os outros campos do workload vão no arquivo JSON de --file. azion update workload --file lê o ID do workload de uma chave "id" dentro desse arquivo. A CLI não tem comando que atualize ou exclua um deployment. Altere a aplicação, o firewall ou o conjunto de custom pages de um deployment no Console ou com o PATCH da API.
Na API v3, as configurações de protocolo e de TLS desta página ficavam nas Main Settings de uma aplicação. Na API v4, elas pertencem ao workload. Para o mapeamento completo entre os dois modelos, consulte Migração para API v4.
Geral
Os campos gerais identificam o workload e registram quem o alterou. A API exige name e nada mais. Todos os outros campos desta tabela são somente leitura, exceto active.
| Campo da API | Tipo | Valores | Padrão | Flag da CLI |
|---|---|---|---|---|
id | integer | atribuído pela Azion, somente leitura | nenhum | nenhuma |
name | string | 1 a 100 caracteres | obrigatório, sem padrão | --name no create; --file no update |
active | boolean | true, false | true | --active no create; --file no update |
last_editor | string | o email do último usuário que alterou o workload, somente leitura | nenhum | nenhuma |
last_modified | string, date-time | somente leitura | nenhum | nenhuma |
created_at | string, date-time | somente leitura | nenhum | nenhuma |
product_version | string | somente leitura | 1.0 | nenhuma |
O name identifica o workload na sua conta e não é um endereço de domínio, então você pode alterá-lo a qualquer momento. Um nome com 101 caracteres ou mais é recusado com Ensure this field has no more than 100 characters.
Infraestrutura
O campo infrastructure escolhe a rede que atende o workload e o sufixo do seu workload domain. No Console, a seção Infrastructure diz: “Select the infrastructure type for your Workload. Once this option is saved, it cannot be modified.”
| Controle do Console | Campo da API | Tipo | Valores | Padrão | Flag da CLI |
|---|---|---|---|---|---|
| Radios de Infrastructure | infrastructure | integer | Production Infrastructure (All Edge Locations) (1), Staging Infrastructure (2) | 1 | apenas --file |
Os dois valores diferem em onde o workload roda e nos domínios que ele aceita:
| Valor | Rede | Workload domain | Domínios personalizados |
|---|---|---|---|
1 | A rede de produção, para disponibilidade global | <id>.map.azionedge.net | Aceitos em domains |
2 | A rede de staging, para testes, com propagação limitada | <id>.preview.azionedge.net | Recusados com Custom hostname is not available in the environment 'Staging Infrastructure'. |
Um workload de staging é acessado apenas pelo seu workload domain, e as alterações feitas nele não afetam o workload de produção. O valor é fixado na criação: uma atualização que o altere é recusada com The infrastructure cannot be changed after Workload creation. Por exemplo, para levar uma configuração testada em staging para produção, você cria um segundo workload com infrastructure definido como 1 em vez de editar o primeiro.
Domínios
Os campos de domínio decidem a quais hostnames o workload responde. Todo workload recebe um workload domain somente leitura, e domains adiciona seus próprios hostnames e o hostname azion.app gratuito e opcional que o Console chama de Azion Custom Domain. A seção Domains do Console escreve os três campos.
| Controle do Console | Campo da API | Tipo | Valores | Padrão | Flag da CLI |
|---|---|---|---|---|---|
Subdomain e Domain, uma linha por hostname, adicionada com Add Domain; o switch Custom Domain e o campo Azion Custom Domain para o hostname azion.app | domains | array of string | hostnames conformes à RFC 1035, exceto wildcards | [] | apenas --file |
| Workload Domain | workload_domain | string | <id>.map.azionedge.net em produção, <id>.preview.azionedge.net em staging, somente leitura | atribuído na criação | nenhuma |
| Switch Workload Domain Allow Access | workload_domain_allow_access | boolean | true, false | true | apenas --file |
O campo Domain aceita um domínio que você digita ou um que você seleciona no Edge DNS. O campo Azion Custom Domain aceita um nome como my-custom-name e acrescenta .azion.app, e o hostname completo é armazenado em domains ao lado dos seus. O hostname azion.app está disponível sem custo adicional.
workload_domain_allow_access definido como true permite que os clientes acessem o workload pelo seu workload domain, independentemente do que mais domains contenha. Defina-o como false quando o workload deve responder apenas nos seus próprios hostnames. Para apontar seu próprio domínio para o workload domain, consulte Aponte um domínio para um workload.
A API aplica estas regras a domains:
| Regra | Recusada com |
|---|---|
| A conta precisa ter permissão para usar cada domínio da lista | This account is not allowed to use the following CNAMEs: example.com. |
Um workload carrega no máximo um hostname azion.app, quer as duas entradas repitam um nome, quer sejam diferentes | Duplicated usage of suffix in alternate_domains: 'azion.app'. |
Um hostname azion.app que outro workload carrega não está disponível | The custom hostname is not available. |
Cada entrada está conforme à RFC 1035, então um wildcard como *.azion.app é recusado | The domain does not conform to the format defined in RFC 1035. |
| Um workload de staging não aceita hostname personalizado | Custom hostname is not available in the environment 'Staging Infrastructure'. |
Com workload_domain_allow_access definido como false, domains precisa conter pelo menos um hostname | When the workload hostname access is blocked, the workload requires alternate domains or domains. |
A API armazena cada hostname com a caixa que você envia: Docs-Rework-Upper.azion.app é lido de volta sem alteração.
Protocolos e portas
O objeto protocols.http define as versões de HTTP que o workload aceita e as portas em que ele escuta. No Console, a seção Protocol Settings o escreve, por meio de dois switches e três listas de portas.
| Controle do Console | Campo da API | Tipo | Valores | Padrão | Flag da CLI |
|---|---|---|---|---|---|
Switch HTTP/3 support para http3 | protocols.http.versions | array of string, no máximo 3 itens | http1, http2, http3 | ["http1", "http2", "http3"] | apenas --file |
| HTTP Ports | protocols.http.http_ports | array of integer, de 1 a 4 itens | 80, 8008, 8080, 8880 | [80] | apenas --file |
| HTTPS Ports, disponível quando o switch HTTPS support está ativado | protocols.http.https_ports | array of integer, de 1 a 12 itens, ou null | 443, 8443, 9440, 9441, 9442, 9443, 7777, 8888, 9553, 9653, 8035, 8090 | [443] | apenas --file |
| HTTP3 Port, disponível quando o switch HTTP/3 support está ativado | protocols.http.quic_ports | array of integer, no máximo 12 itens, ou null | números de porta; 443 e 8443 são aceitos | [443] | apenas --file |
O HTTP/3 roda sobre QUIC. O texto de ajuda do Console para HTTP/3 support diz “Enable HTTP/3 over QUIC. Requires HTTPS support to be enabled.”, e a API acrescenta uma segunda dependência em versions: uma lista com http3 também precisa conter http1 e http2. Caso contrário, a API a recusa com Missing required choices for multiple choices field: ['http1', 'http2'].
Uma porta HTTP fora dos quatro valores é recusada com Invalid choices for multiple choices field: [80, 8008, 8080, 8880]. Por exemplo, um workload que atende HTTP em 8080 junto com 80 envia "http_ports": [80, 8080]. Para as combinações de portas de entrega e de origem que uma aplicação pode usar, consulte Configure portas HTTP e HTTPS.
TLS
O Transport Layer Security (TLS) criptografa a conexão entre um cliente e o workload. O objeto tls nomeia o certificado que o workload apresenta, a versão mais baixa de TLS que ele aceita e o conjunto de cifras que ele oferece. No Console, esses controles ficam na seção Protocol Settings, e Digital Certificate aparece quando o switch HTTPS support está ativado.
| Controle do Console | Campo da API | Tipo | Valores | Padrão | Flag da CLI |
|---|---|---|---|---|---|
| Digital Certificate | tls.certificate | integer, ou null | o ID de um certificado do tipo edge_certificate, ou null para o certificado SAN da Azion | null | apenas --file |
| Minimum TLS version | tls.minimum_version | enum | tls_1_0 (TLS 1.0, obsoleto), tls_1_1 (TLS 1.1, obsoleto), tls_1_2 (TLS 1.2), tls_1_3 (TLS 1.3) | tls_1_3 | apenas --file |
| Cipher suite | tls.ciphers | integer | 1 a 8, um por conjunto em Conjuntos de cifras | 7 | apenas --file |
O HTTPS precisa de um certificado X.509. Você pode fazer upload do seu próprio certificado no Certificate Manager ou solicitar um certificado Let’s Encrypt gerenciado pela Azion, ambos sem custo adicional. Com tls.certificate definido como null, o workload apresenta o certificado SAN da Azion, que cobre o Azion Custom Domain e o workload domain. Um certificado de outro tipo é recusado: um certificado de CA confiável em tls.certificate retorna Invalid certificate type, MUST be an Edge Certificate.
tls.minimum_version define um piso, não a versão exata que uma sessão usa. Um workload com tls_1_2 ainda pode atender uma sessão em TLS 1.3, dependendo da cifra que o cliente e o workload negociam a partir do conjunto. A Azion bloqueia a renegociação de TLS e a retomada de TLS por padrão. Para alterar isso, entre em contato com o time de Vendas.
O conjunto de cifras decide quais algoritmos criptográficos uma conexão TLS pode usar. O cliente e o workload negociam uma cifra do conjunto para cada sessão. A API recusa um valor fora de 1 a 8. Para 9, a mensagem é "9" is not a valid choice. Para alterar o conjunto passo a passo, consulte Defina o conjunto de cifras TLS.
Conjuntos de cifras
Cada valor de tls.ciphers seleciona um conjunto nomeado. As tabelas abaixo listam as cifras que cada conjunto contém, com a versão de TLS a que cada cifra pertence.
Conjunto 1, TLSv1.2_2018
ciphers: 1 seleciona TLSv1.2_2018, que contém três cifras de TLS 1.3 e 13 cifras de TLS 1.2:
| Versão de TLS | Cifra |
|---|---|
| TLS 1.3 | TLS_AES_256_GCM_SHA384 |
| TLS 1.3 | TLS_CHACHA20_POLY1305_SHA256 |
| TLS 1.3 | TLS_AES_128_GCM_SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-RSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-ECDSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-AES128-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-SHA256 |
| TLS 1.2 | AES256-GCM-SHA384 |
| TLS 1.2 | AES128-GCM-SHA256 |
| TLS 1.2 | AES128-SHA256 |
Conjunto 2, TLSv1.2_2019
ciphers: 2 seleciona TLSv1.2_2019, que contém três cifras de TLS 1.3 e 10 cifras de TLS 1.2:
| Versão de TLS | Cifra |
|---|---|
| TLS 1.3 | TLS_AES_256_GCM_SHA384 |
| TLS 1.3 | TLS_CHACHA20_POLY1305_SHA256 |
| TLS 1.3 | TLS_AES_128_GCM_SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-RSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-ECDSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-AES128-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-SHA256 |
Conjunto 3, TLSv1.3_2022
ciphers: 3 seleciona TLSv1.3_2022, que contém seis cifras de TLS 1.2:
| Versão de TLS | Cifra |
|---|---|
| TLS 1.2 | ECDHE-ECDSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-RSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-ECDSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-GCM-SHA256 |
Conjunto 4, TLSv1.2_2021
ciphers: 4 seleciona TLSv1.2_2021, que contém três cifras de TLS 1.3 e seis cifras de TLS 1.2:
| Versão de TLS | Cifra |
|---|---|
| TLS 1.3 | TLS_AES_256_GCM_SHA384 |
| TLS 1.3 | TLS_CHACHA20_POLY1305_SHA256 |
| TLS 1.3 | TLS_AES_128_GCM_SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-RSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-ECDSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-GCM-SHA256 |
Conjunto 5, Legacy_v2025Q1
ciphers: 5 seleciona Legacy_v2025Q1, que contém três cifras de TLS 1.3 e 15 cifras de TLS 1.2:
| Versão de TLS | Cifra |
|---|---|
| TLS 1.3 | TLS_AES_256_GCM_SHA384 |
| TLS 1.3 | TLS_CHACHA20_POLY1305_SHA256 |
| TLS 1.3 | TLS_AES_128_GCM_SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-RSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-ECDSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-AES128-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-SHA256 |
| TLS 1.2 | AES256-GCM-SHA384 |
| TLS 1.2 | AES128-GCM-SHA256 |
| TLS 1.2 | AES256-SHA |
| TLS 1.2 | AES128-SHA256 |
| TLS 1.2 | AES128-SHA |
Conjunto 6, Compatible_v2025Q1
ciphers: 6 seleciona Compatible_v2025Q1, que contém três cifras de TLS 1.3 e 12 cifras de TLS 1.2:
| Versão de TLS | Cifra |
|---|---|
| TLS 1.3 | TLS_AES_256_GCM_SHA384 |
| TLS 1.3 | TLS_CHACHA20_POLY1305_SHA256 |
| TLS 1.3 | TLS_AES_128_GCM_SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-RSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-ECDSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-AES128-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-SHA256 |
| TLS 1.2 | AES256-GCM-SHA384 |
| TLS 1.2 | AES128-GCM-SHA256 |
Conjunto 7, Modern_v2025Q1
ciphers: 7 seleciona Modern_v2025Q1, que contém três cifras de TLS 1.3 e seis cifras de TLS 1.2:
| Versão de TLS | Cifra |
|---|---|
| TLS 1.3 | TLS_AES_256_GCM_SHA384 |
| TLS 1.3 | TLS_CHACHA20_POLY1305_SHA256 |
| TLS 1.3 | TLS_AES_128_GCM_SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-RSA-CHACHA20-POLY1305 |
| TLS 1.2 | ECDHE-ECDSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-GCM-SHA256 |
Conjunto 8, Legacy_v2017Q1
ciphers: 8 seleciona Legacy_v2017Q1, que contém três cifras de TLS 1.3 e 26 cifras de TLS 1.2:
| Versão de TLS | Cifra |
|---|---|
| TLS 1.3 | TLS_AES_256_GCM_SHA384 |
| TLS 1.3 | TLS_CHACHA20_POLY1305_SHA256 |
| TLS 1.3 | TLS_AES_128_GCM_SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-GCM-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-GCM-SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-RSA-AES256-SHA384 |
| TLS 1.2 | ECDHE-ECDSA-AES128-SHA256 |
| TLS 1.2 | ECDHE-RSA-AES128-SHA256 |
| TLS 1.2 | ECDHE-ECDSA-AES256-SHA |
| TLS 1.2 | ECDHE-ECDSA-AES128-SHA |
| TLS 1.2 | ECDHE-RSA-AES256-SHA |
| TLS 1.2 | ECDHE-RSA-AES128-SHA |
| TLS 1.2 | ECDHE-ECDSA-AES256-CCM |
| TLS 1.2 | ECDHE-ECDSA-AES256-CCM8 |
| TLS 1.2 | ECDHE-ECDSA-AES128-CCM |
| TLS 1.2 | ECDHE-ECDSA-AES128-CCM8 |
| TLS 1.2 | AES256-GCM-SHA384 |
| TLS 1.2 | AES128-GCM-SHA256 |
| TLS 1.2 | AES256-SHA256 |
| TLS 1.2 | AES256-SHA |
| TLS 1.2 | AES128-SHA256 |
| TLS 1.2 | AES128-SHA |
| TLS 1.2 | AES256-CCM |
| TLS 1.2 | AES256-CCM8 |
| TLS 1.2 | AES128-CCM |
| TLS 1.2 | AES128-CCM8 |
mTLS
O TLS mútuo (mTLS) faz o cliente também apresentar um certificado, e o workload o verifica contra uma autoridade certificadora em que você confia. O objeto mtls ativa a verificação e nomeia o certificado de CA confiável e as listas de revogação de certificados (CRLs) que ela usa. Defina-o pela API ou pelo arquivo JSON de azion update workload --file.
| Campo da API | Tipo | Valores | Padrão | Flag da CLI |
|---|---|---|---|---|
mtls.enabled | boolean | true, false | false | apenas --file |
mtls.config.certificate | integer, ou null | o ID de um certificado do tipo trusted_ca_certificate | null | apenas --file |
mtls.config.crl | array of integer, no máximo 100 itens, ou null | IDs de CRL | null | apenas --file |
mtls.config.verification | enum, ou null | enforce, permissive | null | apenas --file |
Um certificado de servidor em mtls.config.certificate é recusado com Invalid certificate type, MUST be a Trusted CA. Por exemplo, um workload que verifica certificados de cliente contra sua CA e uma CRL, no modo enforce, envia "mtls": {"enabled": true, "config": {"certificate": <trusted-ca-id>, "crl": [<crl-id>], "verification": "enforce"}}. Para saber como enforce e permissive tratam um certificado de cliente, consulte mTLS.
Deployment
Um deployment vincula a aplicação, o firewall e o conjunto de custom pages que atendem o tráfego de um workload. Ele é um sub-recurso do workload, em /v4/workspace/workloads/{workload_id}/deployments, e um workload carrega um deployment. Um segundo é recusado com The maximum number of deployments allowed per workload is 1. No Console, a seção Deployment Settings do workload o escreve.
| Controle do Console | Campo da API | Tipo | Valores | Flag da CLI |
|---|---|---|---|---|
| nenhum | name | string | o nome do deployment | --name |
| nenhum | active | boolean | true, false | --active |
| nenhum | current | boolean | true torna este deployment aquele que o workload executa | --current |
| nenhum | strategy.type | string | default | --strategy-type |
| Application | strategy.attributes.application | integer | o ID de uma aplicação | --application-id |
| Firewall | strategy.attributes.firewall | integer | o ID de um firewall | --firewall-id |
| Custom Page | strategy.attributes.custom_page | integer, ou null | o ID de um conjunto de custom pages | --custom-page |
strategy.attributes contém exatamente essas três chaves. Um deployment criado sem conjunto de custom pages contém "custom_page": null. Um deployment sem firewall mostra Select a Firewall no campo Firewall do Console e 0 em azion list workload-deployment --details. Um conjunto de custom pages só tem efeito quando o deployment o nomeia em custom_page. Um workload que ainda usa um firewall impede que esse firewall seja excluído, e excluir o deployment não o libera: exclua o workload primeiro.
Corpo da requisição
O corpo JSON abaixo cria um workload de staging com TLS 1.2 como piso, o conjunto de cifras 4 e duas portas HTTP e duas HTTPS. O mesmo corpo funciona para POST /v4/workspace/workloads e para o arquivo de azion create workload --file:
Envie-o com a CLI, com o corpo salvo como wl-staging.json:
O comando imprime o ID do novo workload:
azion describe workload --workload-id <workload-id> --format json então retorna o workload como a API o armazena, com seu workload domain de staging:
Pela API, POST /v4/workspace/workloads responde com HTTP 202 e state definido como pending. Um workload de produção criado apenas com name, active, infrastructure e workload_domain_allow_access retorna todos os padrões:
O corpo de deployment abaixo vincula uma aplicação e um firewall por meio de POST /v4/workspace/workloads/{workload_id}/deployments:
A API responde com HTTP 202, state definido como pending e o deployment com custom_page definido como null:
A CLI cria o mesmo vínculo por flags, aqui com uma aplicação e um conjunto de custom pages:
O comando imprime o ID do novo deployment:
azion list workload-deployment --workload-id <workload-id> --details mostra o deployment, sua aplicação e seu firewall, com 0 quando não há firewall:
Erros
A API recusa cada requisição abaixo com a mensagem da primeira coluna. Para uma recusa de workload ou de deployment, a CLI imprime a mensagem dentro de Error: Failed to create the Workload: [...], Error: Failed to update the Workload: [...] ou Error: Failed to create the Workload Deployment: [...], seguida de Check your settings and try again. If the error persists, contact Azion support. A linha 24003 é a resposta da API a um DELETE de firewall.
| Mensagem | Causa | O que fazer |
|---|---|---|
Ensure this field has no more than 100 characters. | name tem mais de 100 caracteres. | Encurte o nome para 100 caracteres ou menos. |
The infrastructure cannot be changed after Workload creation. | Uma atualização altera infrastructure. | Deixe infrastructure fora da atualização, ou crie um novo workload na outra infraestrutura. |
Custom hostname is not available in the environment 'Staging Infrastructure'. | domains contém um hostname em um workload com infrastructure definido como 2. | Envie "domains": [] e acesse o workload pelo seu workload domain, ou use um workload de produção. |
When the workload hostname access is blocked, the workload requires alternate domains or domains. | workload_domain_allow_access é false e domains está vazio. | Adicione um hostname a domains, ou defina workload_domain_allow_access como true. |
This account is not allowed to use the following CNAMEs: example.com. | domains contém um domínio para o qual a conta não tem permissão; a mensagem o nomeia. | Remova o domínio, ou use um domínio para o qual a conta tenha permissão. |
Duplicated usage of suffix in alternate_domains: 'azion.app'. | domains contém dois hostnames azion.app, o mesmo nome duas vezes ou dois nomes diferentes. | Mantenha um hostname azion.app. |
The custom hostname is not available. | Outro workload já carrega o hostname azion.app. | Escolha outro nome, ou remova-o do outro workload primeiro. |
The domain does not conform to the format defined in RFC 1035. | Uma entrada de domains é um wildcard, como *.azion.app, ou outro nome malformado. | Liste cada hostname por completo. |
Invalid choices for multiple choices field: [80, 8008, 8080, 8880]. | http_ports contém uma porta fora dos quatro valores permitidos. | Use apenas 80, 8008, 8080 ou 8880. |
Missing required choices for multiple choices field: ['http1', 'http2']. | versions contém http3 sem http1 e http2. | Envie ["http1", "http2", "http3"], ou remova http3. |
"9" is not a valid choice. | tls.ciphers está fora de 1 a 8; a mensagem cita o valor enviado. | Envie um número de conjunto de 1 a 8. |
Invalid certificate type, MUST be an Edge Certificate. | tls.certificate contém o ID de um certificado de CA confiável. | Envie o ID de um certificado do tipo edge_certificate, ou null. |
Invalid certificate type, MUST be a Trusted CA. | mtls.config.certificate contém o ID de um certificado de servidor. | Envie o ID de um certificado do tipo trusted_ca_certificate. |
The maximum number of deployments allowed per workload is 1. | Um segundo deployment é criado em um workload que já tem um. | Altere o deployment existente com PATCH /v4/workspace/workloads/{workload_id}/deployments/{deployment_id}, ou em Deployment Settings. |
24003 Cannot Delete Firewall: To delete this firewall, you must first remove its usage in the following workloads: [<id>]. | Um DELETE tem como alvo um firewall que o deployment de um workload ainda nomeia. Excluir o deployment não o libera. | Exclua os workloads que a mensagem lista e repita o DELETE. |