---
name: azion-personalize-uma-pagina-de-erro
description: >-
  Substitua as respostas de erro de um workload por páginas suas, uma por código de status, cada uma com tempo de cache e código de status de resposta próprios.
---

# Personalize uma página de erro

Você pode substituir as respostas de erro de um [workload](/pt-br/documentacao/plataforma/workloads/) por páginas suas, para vários códigos de status de uma vez, pelo Azion Console, pela [Azion CLI](/pt-br/documentacao/devtools/cli/) ou pela API. Para criar o seu primeiro conjunto com uma página e vê-la substituir um `404`, consulte [Primeiros passos com Custom Pages](/pt-br/documentacao/plataforma/workloads/custom-pages/primeiros-passos/).

Com [Custom Pages](/pt-br/documentacao/plataforma/workloads/#custom-pages), as páginas ficam em um conjunto de custom pages. Cada página responde a um código de status que o [connector](/pt-br/documentacao/plataforma/connectors/) da aplicação retorna, e o conjunto serve páginas apenas depois que o deployment do workload o nomeia.

Uma aplicação que roda na API v3 define as suas páginas de erro em Error Responses. Para mais informações, consulte [Error Responses](/pt-br/documentacao/plataforma/workloads/custom-pages/error-responses/).

---

Selecione uma interface. Os pré-requisitos e as etapas de cada tarefa seguem a sua escolha.

## Pré-requisitos

- Um workload e uma aplicação para ele servir. Para criar os dois, consulte [Primeiros passos com Workloads](/pt-br/documentacao/plataforma/workloads/primeiros-passos/).
- Um connector que serve os documentos das suas páginas de erro, cada um no próprio caminho. Para mais informações, consulte [Connectors](/pt-br/documentacao/plataforma/connectors/).

**Console**

- Acesso ao Azion Console. Para mais informações, consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).
- Um workload cujo deployment nomeia a aplicação.

**CLI**

- [Azion CLI](/pt-br/documentacao/devtools/cli/), autorizada com a sua conta. Esta página corresponde à Azion CLI 4.23.0.
- Um workload ainda sem deployment. A CLI define o conjunto de custom pages de um workload apenas quando cria o deployment, e um workload contém um deployment. Este guia cria o deployment.
- O ID do workload, o ID da aplicação que o workload serve e o ID do connector.

**API**

- Um personal token para o header `Authorization`, no formato `Token [TOKEN VALUE]`. Para criar um token, consulte [Tokens pessoais](/pt-br/documentacao/fundamentos/personal-tokens/).
- `curl` ou outro cliente HTTP.
- Um workload cujo deployment nomeia a aplicação.
- O ID do workload, o ID da aplicação que o workload serve e o ID do connector.
- O ID do deployment. `azion list workload-deployment --workload-id <workload-id>` o imprime na coluna `ID`.

---

## Crie um conjunto com uma página para cada código

Cada página do conjunto recebe o próprio código de status, caminho no connector, tempo de cache e código de status de resposta. Uma página também pode responder com um código diferente daquele que o connector retornou, como um `404` no lugar de um `403`. A Azion serve a página no próprio lugar, sem redirecionamento. Depois que você altera o documento de uma página, a Azion continua servindo a cópia em cache até que o tempo de cache dela termine. Para os códigos que uma página aceita e o intervalo de cada campo, consulte [Configurações de custom page](/pt-br/documentacao/plataforma/workloads/custom-pages/configuracoes/#campos-da-pagina).

**Console**

Para criar o conjunto no Azion Console:

1. **Abra a página Custom Pages**

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

2. **Inicie o conjunto**

   Selecione **Create Custom Page**. Para adicionar páginas a um conjunto que você já tem, selecione esse conjunto.

3. **Nomeie o conjunto**

   Em **Name**, digite um nome que identifique o conjunto, como `my-error-pages`.

4. **Selecione Create Custom Page Code**

5. **Selecione o código de status**

   Em **Page Code**, selecione o código de status que o seu connector retorna, como `404`.

6. **Selecione o connector**

   Em **Connector**, selecione o connector que guarda a página.

7. **Digite o caminho da página**

   Em **Page Path (URI)**, digite o caminho da página no connector, como `/errors/404.html`.

8. **Defina o tempo de cache**

   Em **Response TTL**, digite o número de segundos que a página fica em cache, como `3600`.

9. **(Opcional) Defina o código de status de resposta**

   Em **Response Custom Status Code**, digite o código de status que o cliente recebe no lugar do original.

10. **Adicione os outros códigos**

    Selecione **Create Custom Page Code** de novo para cada outro código de status e preencha os campos dele da mesma forma.

11. **Salve o conjunto**

    Selecione **Create**. Em um conjunto que você já tem, selecione **Save**.

A tabela **Page Codes** lista uma linha por página, com **Page Status Code**, **Page Path (URI)**, **Custom Status Code** e **Response TTL**.

**CLI**

Para criar o conjunto com Azion CLI, salve um arquivo JSON com uma entrada em `pages` por código de status, aqui como `pages.json`. Este conjunto responde a um `404` com a página em `/errors/404.html` e responde a um `403` com a mesma página e o status `404`:

```json
{"name": "my-error-pages", "active": true, "pages": [
  {"code": "404", "page": {"type": "page_connector", "attributes": {"connector": <connector-id>, "ttl": 3600, "uri": "/errors/404.html", "custom_status_code": 404}}},
  {"code": "403", "page": {"type": "page_connector", "attributes": {"connector": <connector-id>, "ttl": 3600, "uri": "/errors/404.html", "custom_status_code": 404}}}
]}
```

Crie o conjunto a partir do arquivo:

```bash
azion create custom-pages --file pages.json
```

O comando imprime o ID do conjunto novo. O deployment precisa dele na próxima tarefa:

```text
Created Custom Page with ID <custom-page-id>
```

Um arquivo cuja lista `pages` está vazia é recusado com `Ensure this field has at least 1 elements.`

**API**

Para criar o conjunto com a API, envie uma requisição `POST` para o endpoint de custom pages, com uma entrada em `pages` por código de status. Este conjunto responde a um `404` com a página em `/errors/404.html` e responde a um `403` com a mesma página e o status `404`:

```bash
curl --request POST \
  --url https://api.azion.com/v4/workspace/custom_pages \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "my-error-pages",
  "active": true,
  "pages": [
    {"code": "404", "page": {"type": "page_connector", "attributes": {"connector": <connector-id>, "ttl": 3600, "uri": "/errors/404.html", "custom_status_code": 404}}},
    {"code": "403", "page": {"type": "page_connector", "attributes": {"connector": <connector-id>, "ttl": 3600, "uri": "/errors/404.html", "custom_status_code": 404}}}
  ]
}'
```

A API responde com `201` e o conjunto novo, incluindo o `id` dele. Uma requisição `GET` para `/v4/workspace/custom_pages` lista os seus conjuntos com os IDs deles. Um corpo cuja lista `pages` está vazia é recusado com `Ensure this field has at least 1 elements.`

---

## Atribua o conjunto no deployment do workload

O deployment de um workload nomeia a aplicação, o firewall e o conjunto de custom pages dele. Apenas o conjunto de custom pages muda aqui, então a aplicação e o firewall mantêm os valores que o workload usa hoje.

**Console**

Para atribuir o conjunto no Azion Console:

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

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

2. **Abra o workload**

   Selecione o workload cujas respostas de erro o conjunto substitui. O formulário de edição dele abre.

3. **Selecione o seu conjunto**

   Na seção **Deployment Settings**, selecione o seu conjunto no campo **Custom Page**. Em um workload sem conjunto, o campo mostra *Select a custom page*.

   **Application** e **Firewall** mantêm os valores que o workload serve hoje.

4. **Salve o workload**

   Selecione **Save**.

Azion Console mostra "Your workload has been updated", e o deployment do workload nomeia o seu conjunto.

**CLI**

Para atribuir o conjunto com Azion CLI, crie o deployment do workload com o conjunto em `--custom-page`:

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

O comando imprime o ID do deployment novo:

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

Se o workload usa um firewall, adicione `--firewall-id <firewall-id>` ao comando. Em um workload que já tem um deployment, o comando falha com `The maximum number of deployments allowed per workload is 1.` Azion CLI 4.23.0 não tem comando que altere um deployment, então atribua o conjunto a esse workload no Azion Console ou com a API.

**API**

Para atribuir o conjunto com a API, envie uma requisição `PATCH` para o deployment do workload. O conjunto vai em `strategy.attributes.custom_page`, ao lado da aplicação que o deployment nomeia hoje. Deixe `firewall` de fora se o deployment não tem firewall:

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

A API responde com `202`. O deployment então nomeia o seu conjunto em `custom_page`.

---

## Confirme que uma página substitui o erro

A verificação é a mesma para todas as interfaces. Uma mudança no deployment de um workload leva vários minutos para alcançar toda a infraestrutura distribuída da Azion, e as requisições podem receber a configuração anterior ou a atualizada nesse meio-tempo. Repita uma requisição até que as respostas concordem.

Solicite um caminho para o qual o seu connector retorna um código de status que o conjunto cobre. Substitua `<your-domain>` por um domínio que o workload serve, como o workload domain dele, no formato `<id>.map.azionedge.net`:

```bash
curl -s -D - https://<your-domain>/<missing-path>
```

Para uma página cujo código de status de resposta é `404`, a resposta começa com esta linha de status, seguida dos headers que o seu connector envia e do documento no caminho da página:

```text
HTTP/2 404 
```

A resposta não traz header `Location`, então o cliente permanece na URL solicitada e não é redirecionado. Se a resposta de erro do próprio connector ainda chega depois que a mudança no deployment se propagou, consulte [Solucionar problemas de Workloads](/pt-br/documentacao/plataforma/workloads/solucao-de-problemas/#custom-pages).

---

## Próximos passos

- [Configurações de custom page](/pt-br/documentacao/plataforma/workloads/custom-pages/configuracoes.md): Consulte cada código de status que uma página aceita, o intervalo de cada campo e os erros da API.
- [Como Workloads funciona](/pt-br/documentacao/plataforma/workloads/como-funciona.md#custom-pages): Acompanhe uma resposta desde o código de status do connector até a página que o cliente recebe.
- [Configurações de workload](/pt-br/documentacao/plataforma/workloads/configuracoes.md#deployment): Verifique cada campo do deployment que nomeia a aplicação, o firewall e o conjunto de custom pages.
- [Solucionar problemas de Workloads](/pt-br/documentacao/plataforma/workloads/solucao-de-problemas.md#custom-pages): Descubra por que um workload ainda retorna a resposta de erro do connector no lugar da sua página.
