# Primeiros passos com Workloads

Este guia orienta você a atender a sua aplicação a partir do seu primeiro [workload](/pt-br/documentacao/plataforma/workloads/).

- Crie um workload na infraestrutura de produção.
- Vincule a aplicação que você já tem ao workload por meio do deployment dele.
- Envie uma requisição para o workload domain e receba a resposta da sua aplicação.

Quatro objetos levam uma requisição até a sua aplicação, e cada um se liga ao seguinte:

1. O **workload** recebe o tráfego. A Azion atribui a ele um workload domain, um hostname no formato `<id>.map.azionedge.net`. O workload responde nele antes que você tenha ou aponte qualquer domínio.
2. O **deployment** do workload nomeia a aplicação que responde. Um workload contém um deployment.
3. A **aplicação** trata a requisição. Ela já existe, e o workload não acrescenta nada a ela.
4. A **requisição** para o workload domain chega ao workload, e o deployment a envia para a sua aplicação.

Um workload sem deployment não tem aplicação para a qual enviar uma requisição. Uma aplicação não atende tráfego até que um deployment a vincule a um workload. Este guia mantém os padrões de um workload novo: a infraestrutura de produção, as configurações de TLS padrão, as portas `80` e `443` e nenhum domínio seu.

O workload que este guia deixa pronto é o ponto de partida de outros dois primeiros passos. Com [Certificate Manager](/pt-br/documentacao/plataforma/workloads/#certificate-manager), você vincula um certificado ao workload. Com [Custom Pages](/pt-br/documentacao/plataforma/workloads/#custom-pages), você atribui um conjunto de custom pages no deployment do workload para substituir respostas de erro. [DDoS Protection](/pt-br/documentacao/plataforma/workloads/#ddos-protection) não precisa de configuração: a plataforma mitiga ataques DDoS em todo workload.

---

Selecione a interface que você usa. Os pré-requisitos e cada etapa desta página seguem essa escolha.

## Pré-requisitos

- Uma conta Azion. Para criar uma, consulte [Criar uma conta](/pt-br/documentacao/fundamentos/criar-uma-conta/).
- Uma aplicação que serve conteúdo. Para criar uma, consulte [Primeiros passos com Applications](/pt-br/documentacao/plataforma/applications/primeiros-passos/).

**Console**

- Acesso ao Azion Console. Para entrar, consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).

**CLI**

- [Azion CLI](/pt-br/documentacao/devtools/cli/) instalada e autorizada.
- O ID da sua aplicação.

**API**

- Um personal token e `curl`. Para criar um token, consulte [Tokens pessoais](/pt-br/documentacao/fundamentos/personal-tokens/).
- O ID da sua aplicação.

---

## Crie o workload

Um workload novo é executado na infraestrutura de produção e responde no workload domain dele. A infraestrutura fica fixa depois que o workload existe. Um workload criado em staging não pode passar para produção depois. O workload domain continua acessível enquanto **Workload Domain Allow Access** estiver ativado, que é o padrão.

**Console**

No Azion Console, um único formulário cria o workload e o deployment dele ao mesmo tempo. O campo **Application** de **Deployment Settings** nomeia a sua aplicação antes de você selecionar **Create**.

Para criar o workload no Azion Console:

1. **Abra a página Workloads**

   Acesse [Azion Console](https://console.azion.com/) > **Workloads**.

2. **Inicie um workload**

   Selecione **Create Workload**. A página **Create Workload** abre.

3. **Nomeie o workload**

   Digite um nome para o workload, como `my-workload`.

4. **Selecione a infraestrutura de produção**

   Em **Infrastructure**, selecione *Production Infrastructure (All Edge Locations)*.

5. **Mantenha o workload domain aberto**

   Em **Domains**, mantenha **Workload Domain Allow Access** ativado.

6. **Selecione a sua aplicação**

   Em **Deployment Settings**, selecione a sua aplicação em **Application**. Deixe **Firewall** e **Custom Page** vazios.

7. **Selecione Create**

Azion Console mostra a mensagem "Your Workload has been created. After propagation the domain will be available in the Workload URL. You also can add a custom domain." Para copiar o workload domain para o qual você envia a requisição, selecione **Copy Workload URL**. O workload existe, e o deployment dele nomeia a sua aplicação.

**CLI**

Para criar o workload com a Azion CLI:

```bash
azion create workload --name my-workload
```

O comando imprime o ID do workload novo:

```text
Created Workload with ID <workload-id>
```

Leia o workload de volta em JSON. Substitua `<workload-id>` pelo ID do comando anterior:

```bash
azion describe workload --workload-id <workload-id> --format json
```

A saída mostra os padrões de um workload novo e o workload domain que a Azion atribuiu a ele:

```json
{
 "active": true,
 "created_at": "2026-01-01T12:00:00.000000Z",
 "domains": [],
 "id": <workload-id>,
 "infrastructure": 1,
 "last_editor": "<your-email>",
 "last_modified": "2026-01-01T12:00:00.000000Z",
 "mtls": {
  "config": {
   "certificate": null,
   "verification": null
  },
  "enabled": false
 },
 "name": "my-workload",
 "product_version": "1.0",
 "protocols": {
  "http": {
   "http_ports": [
    80
   ],
   "https_ports": [
    443
   ],
   "quic_ports": [
    443
   ],
   "versions": [
    "http1",
    "http2",
    "http3"
   ]
  }
 },
 "tls": {
  "certificate": null,
  "ciphers": 7,
  "minimum_version": "tls_1_3"
 },
 "workload_domain": "<id>.map.azionedge.net",
 "workload_domain_allow_access": true
}
```

`infrastructure` definido como `1` é a infraestrutura de produção, e `domains` está vazio. Anote o `id` para o deployment e o `workload_domain` para a requisição. O workload existe e ainda não tem deployment.

**API**

Para criar o workload com a API, envie uma requisição `POST` para o endpoint de workloads. `infrastructure` definido como `1` seleciona a infraestrutura de produção, e `workload_domain_allow_access` definido como `true` mantém o workload domain aberto. Substitua `[TOKEN VALUE]` pelo seu personal token:

```bash
curl --request POST \
  --url https://api.azion.com/v4/workspace/workloads \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "my-workload",
  "active": true,
  "infrastructure": 1,
  "workload_domain_allow_access": true
}'
```

A API responde com `202`. A resposta traz os padrões do workload novo e o workload domain que a Azion atribuiu a ele:

```json
{
  "state": "pending",
  "data": {
    "id": <workload-id>,
    "name": "my-workload",
    "active": true,
    "last_editor": "<your-email>",
    "last_modified": "2026-01-01T12:00:00.000000Z",
    "created_at": "2026-01-01T12:00:00.000000Z",
    "infrastructure": 1,
    "tls": {
      "certificate": null,
      "ciphers": 7,
      "minimum_version": "tls_1_3"
    },
    "protocols": {
      "http": {
        "versions": ["http1", "http2", "http3"],
        "http_ports": [80],
        "https_ports": [443],
        "quic_ports": [443]
      }
    },
    "mtls": {
      "enabled": false,
      "config": {
        "certificate": null,
        "crl": null,
        "verification": null
      }
    },
    "domains": [],
    "workload_domain_allow_access": true,
    "workload_domain": "<id>.map.azionedge.net",
    "product_version": "1.0"
  }
}
```

Anote o `id` para o deployment e o `workload_domain` para a requisição. O workload existe e ainda não tem deployment.

---

## Vincule a sua aplicação

O deployment de um workload nomeia a aplicação que responde às requisições dele e, opcionalmente, um firewall e um conjunto de custom pages. Um workload contém um deployment, e um segundo é recusado. Até que o deployment nomeie a sua aplicação, o workload não tem para onde enviar uma requisição.

**Console**

O formulário **Create Workload** já criou o deployment. Para conferir o vínculo no Azion Console:

1. **Abra a página Workloads**

   Acesse [Azion Console](https://console.azion.com/) > **Workloads**.

2. **Abra o seu workload**

   Selecione o workload que você criou. A página **Edit Workload** abre.

3. **Confira a aplicação**

   Em **Deployment Settings**, confira se **Application** mostra a sua aplicação.

O deployment do workload nomeia a sua aplicação.

**CLI**

Para vincular a aplicação com a Azion CLI, crie o deployment do workload. Substitua `<workload-id>` e `<application-id>`:

```bash
azion create workload-deployment --workload-id <workload-id> \
  --name my-deployment --application-id <application-id> \
  --strategy-type default --active true --current true
```

O comando imprime o ID do deployment novo:

```text
Created Workload Deployment with ID <deployment-id>
```

`--current true` torna esse o deployment que o workload executa. Liste o deployment com os vínculos dele:

```bash
azion list workload-deployment --workload-id <workload-id> --details
```

A saída mostra a sua aplicação e `0` para nenhum firewall:

```text
ID               CURRENT  EDGE APPLICATION  EDGE FIREWALL
<deployment-id>  true     <application-id>  0
```

O deployment atual do workload nomeia a sua aplicação. A Azion CLI não altera um deployment depois que ele existe. Confira o ID da aplicação antes de executar o comando.

**API**

Para vincular a aplicação com a API, envie uma requisição `POST` para os deployments do seu workload. A aplicação vai em `strategy.attributes.application`. Substitua `<workload-id>` e `<application-id>`:

```bash
curl --request POST \
  --url https://api.azion.com/v4/workspace/workloads/<workload-id>/deployments \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "my-deployment",
  "current": true,
  "active": true,
  "strategy": {
    "type": "default",
    "attributes": {
      "application": <application-id>
    }
  }
}'
```

A API responde com `202` e `"state": "pending"`, e a resposta retorna o deployment novo. `current` definido como `true` torna esse o deployment que o workload executa. O deployment atual do workload nomeia a sua aplicação.

---

## Envie uma requisição para o workload domain

A verificação é a mesma, qualquer que seja a interface que criou o workload. Nos comandos, substitua `<your-workload-domain>` pelo workload domain do workload que você criou, no formato `<id>.map.azionedge.net`.

Um workload novo não responde de imediato. O deployment dele se espalha pela infraestrutura distribuída da Azion, e isso leva vários minutos, sem duração garantida. Até lá, o workload domain responde `404` com a página de erro HTML da Azion. Enquanto o deployment se espalha, as respostas à mesma requisição podem alternar entre esse `404` e a resposta da sua aplicação. Envie a requisição de novo até a sua aplicação responder. Para mais informações, consulte [Propagação](/pt-br/documentacao/plataforma/workloads/como-funciona/#propagacao).

Antes que o deployment se propague, uma requisição somente de cabeçalhos recebe a página de erro da Azion:

```bash
curl -sI https://<your-workload-domain>/get
```

```text
HTTP/2 404
server: nginx
content-type: text/html
x-azion-request-id: <request-id>
x-azion-edge-location: <edge-location>
```

O cabeçalho `x-azion-request-id` identifica a requisição. Quando o deployment responder, envie uma requisição para o caminho raiz do seu workload domain:

```bash
curl -i https://<your-workload-domain>/
```

A resposta é a que a sua aplicação retorna para `/`: o status, os cabeçalhos e o corpo. O seu workload atende a sua aplicação no workload domain dele.

---

## Próximos passos

- [Primeiros passos com Certificate Manager](/pt-br/documentacao/plataforma/workloads/certificate-manager/primeiros-passos.md): Envie o seu primeiro certificado, vincule-o ao seu workload e veja o status dele mudar para active.
- [Primeiros passos com Custom Pages](/pt-br/documentacao/plataforma/workloads/custom-pages/primeiros-passos.md): Crie um conjunto de custom pages, atribua-o no deployment do seu workload e veja um 404 ser substituído no lugar.
- [Adicione um domínio a um workload](/pt-br/documentacao/guias/plataforma/migracao/configurar-dominio.md): Liste um domínio seu no workload e aponte-o para o workload domain.
- [Configurações de workload](/pt-br/documentacao/plataforma/workloads/configuracoes.md): Cada campo de um workload e do deployment dele, com o tipo, o padrão e os valores permitidos.
