---
name: azion-instale-a-integracao-process-request-data-into-headers
description: >-
  Instale Process Request Data Into Headers pelo Azion Marketplace e execute-a em um firewall para transformar campos do corpo em headers de requisição.
---

# Instale a integração Process Request Data Into Headers

Você instala a integração Process Request Data Into Headers pelo Azion Marketplace e a executa em um [Firewall](/pt-br/documentacao/plataforma/firewall/), pelo Azion Console. A função converte os campos do corpo de uma requisição em headers de requisição e interrompe a requisição quando um campo do corpo está vazio. Com regex, você valida que um campo existe e que corresponde a um padrão, e pode usar qualquer behavior em vez de um `Deny Request` fixo.

Cinco objetos precisam existir antes que uma requisição seja processada: a função instalada, um firewall com o módulo **Functions**, uma instância de função, uma regra do Rules Engine com o behavior **Run Function** e um deployment de workload vinculado ao firewall. Cada seção abaixo cria um deles.

---

## Pré-requisitos

- Uma conta Azion. Para entrar, consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).
- Uma aplicação servida por um [workload](/pt-br/documentacao/plataforma/workloads/), cujo deployment você vincula ao firewall na última seção.
- A [Azion CLI](/pt-br/documentacao/devtools/cli/) instalada e autorizada, para a última seção.
- Ativar um produto ou um módulo pode gerar custos de uso. Para mais informações, consulte [Preços](/pt-br/documentacao/fundamentos/precos/).

---

## Instale a integração

A função é instalada uma vez por conta. Para instalá-la:

1. **Abra Marketplace**

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

2. **Encontre a integração**

   Digite `Process Request Data Into Headers` no campo **Search on Marketplace** e selecione o card da integração. Navegar pelos cards e pelas categorias leva à mesma página.

3. **Selecione Install**

O card mostra `Successfully installed!` e `Latest version installed!`, e a função aparece na lista **Function** do drawer **Create Instance**.

---

## Crie o firewall

O firewall é onde a função é instanciada e onde fica a regra que a executa. Para criar um:

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

   Acesse [Azion Console](https://console.azion.com/) > **Firewalls** e crie um firewall.

2. **Dê um nome ao firewall**

   Na seção **General**, digite um **Name**. Por exemplo: `request-data-firewall`.

3. **Ative o módulo Functions**

   Na seção **Modules**, ative o switch **Functions**.

4. **Salve o firewall**

O firewall mostra a aba **Functions Instances** enquanto o módulo **Functions** estiver ativo. Para usar um firewall existente, ative o módulo **Functions** dele e salve-o. Para todas as configurações deste formulário, consulte [Defina as configurações principais de um firewall](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/firewall-definir-main-settings/).

---

## Crie a instância de função

A instância conecta a função instalada ao seu firewall. Para criá-la:

1. **Abra a aba Functions Instances**

   Em **Firewalls**, selecione seu firewall e a aba **Functions Instances**.

2. **Selecione + Function**

   Um firewall sem nenhuma instância mostra a mesma ação como **Function Instance**. O drawer **Create Instance** é aberto.

3. **Dê um nome à instância**

   Em **Name**, digite um nome. Por exemplo: `process-request-data`.

4. **Selecione a função instalada**

   Em **Function**, selecione a função Process Request Data Into Headers. A lista contém apenas as funções que são executadas em um firewall.

5. **Selecione Save**

A instância aparece na aba **Functions Instances**.

### Argumentos

A função não recebe argumentos. Você pode testá-la com `curl` depois que a regra a executar.

### Exemplos de requisição

Quando uma requisição tem um header `Content-Type` válido e um corpo válido, a função converte os campos do corpo em headers. A função também aceita dados de objetos aninhados, e um hífen separa cada nível do objeto no nome do header.

| Comando curl                                                                                                                                                               | Headers de requisição adicionados pela função                                                           |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `curl https://mydomain/function`                                                                                                                                           | `X-Body-Error": "CT001`                                                                                 |
| `curl -H "Content-Type: application/x-www-form-urlencoded" --request POST --data 'param1=v1&param2=v2&param3=v3' https://mydomain/function`                                | `X-Body-Param1": "v1"`, `X-Body-Param2": "v2"`, `X-Body-Param3": "v3"`                                  |
| `curl -H "Content-Type: application/json" --request POST --data '{"my_data": {"abc": {"def": {"g": "xyz","h": false,"e": null}}, "number": 1}}' https://mydomain/function` | `X-Body-My-Data-Abc-Def-G": "xyz"`, `X-Body-My-Data-Abc-Def-H": "false"`, `X-Body-My-Data-Number": "1"` |
| `curl -H "Content-Type: text/plain" --request POST --data 'plain=text' https://mydomain /function`                                                                         | `X-Body-Error": "CT002"`                                                                                |
| `curl -H "Content-Type: application/json" --request POST --data '{"my_data": {"abc": {"def": {"g": "xyz","h": false,"e": null}}, "number": 1}' https://mydomain/function`  | `X-Body-Error": "FD001"`                                                                                |

### Erros

Quando a função falha, ela adiciona o código de erro a um novo header, `X-Body-Error`:

| Código de erro | Descrição                                                                                   |
| -------------- | ------------------------------------------------------------------------------------------- |
| `CT001`        | O header `Content-Type` está ausente ou é nulo                                              |
| `CT002`        | O header `Content-Type` tem um valor que a função não aceita                                |
| `FD001`        | O corpo da requisição não está formatado corretamente e a função não consegue decodificá-lo |

---

## Crie a regra

A instância não processa nada até que uma regra a execute. Uma regra do [Rules Engine for Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine/) seleciona as requisições que chegam à instância, por meio de um behavior **Run Function**. Para criar a regra:

1. **Abra a aba Rules Engine**

   Em **Firewalls**, selecione seu firewall e a aba **Rules Engine**.

2. **Selecione + Rule**

3. **Dê um nome à regra**

   Em **Name**, digite um nome. Por exemplo: `Run Process Request Data Into Headers`.

4. **Defina o critério**

   Na seção **Criteria**, selecione os domínios que executam a integração. Por exemplo: if `Host` *matches* `yourdomain.com`.

5. **Adicione o behavior Run Function**

   Na seção **Behaviors**, selecione **Run Function** e selecione a instância pelo nome que você deu a ela.

6. **Selecione Save**

O firewall executa a instância em toda requisição aos domínios do critério.

---

## Vincule o firewall ao workload

O vínculo fica no deployment do workload, então crie um deployment que indique a aplicação e o firewall:

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

O comando exibe o id do novo deployment:

```text
Created Workload Deployment with ID 123456
```

As requisições ao domínio do workload chegam ao firewall, e a regra executa a instância de Process Request Data Into Headers em cada uma.

---

## Próximos passos

- [Integrações do Marketplace](/pt-br/documentacao/plataforma/marketplace/integracoes.md): Todas as integrações que Azion Marketplace oferece e onde cada uma é executada.
- [Rules Engine for Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine.md): Todos os critérios e behaviors que uma regra de firewall aceita.
- [Atualize uma integração](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/integracoes/atualizar-uma-integracao.md): Leve uma integração instalada para a versão mais recente.
