---
name: azion-instale-a-integracao-upstash-waiting-room
description: >-
  Instale o Upstash Waiting Room pelo Azion Marketplace e execute-o em um firewall para colocar visitantes em fila quando o tráfego excede o seu site.
---

# Instale a integração Upstash Waiting Room

Você instala a integração Upstash Waiting Room pelo Azion Marketplace e a executa em um [Firewall](/pt-br/documentacao/plataforma/firewall/), pelo Azion Console. A integração gerencia picos de tráfego e evita sobrecarga nos seus sites e aplicações. Ela cria uma sala de espera que controla e redireciona o acesso de acordo com os seus parâmetros, com uma abordagem First-In, First-Out (FIFO).

Cinco objetos precisam existir antes de uma requisição entrar na fila: a função instalada, um firewall carregando o módulo **Functions**, uma instância de função que guarda os argumentos, 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.
- Uma [conta na Upstash](https://console.upstash.com/).
- Um Global Database, criado no [Upstash Console](https://console.upstash.com/). A URL e o token dele são argumentos da instância de função.
- O [Azion CLI](/pt-br/documentacao/devtools/cli/) instalado e autorizado, para a última seção.
- Ligar 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 o Marketplace**

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

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

   Informe `Upstash Waiting Room` no campo **Search on Marketplace** e selecione o card da integração. Navegar pelos cards e pelas categorias alcança a 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 vive 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. **Nomeie o firewall**

   Na seção **General**, informe um **Name**. Por exemplo: `waiting-room-firewall`.

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

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

4. **Salve o firewall**

O firewall mostra uma aba **Functions Instances** enquanto o módulo **Functions** permanece ligado. Para usar um firewall existente, ligue o módulo **Functions** dele e salve-o. Para cada configuração deste formulário, consulte [Defina as main settings 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 guarda as suas credenciais da Upstash e a capacidade do seu site. Para criá-la:

1. **Abra a aba Functions Instances**

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

2. **Selecione + Function**

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

3. **Nomeie a instância**

   Em **Name**, informe um nome. Por exemplo: `upstash-waiting-room`.

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

   Em **Function**, selecione a função Upstash Waiting Room. A lista contém apenas as funções que rodam em um firewall.

5. **Informe os argumentos**

   Em **Arguments**, o editor vem preenchido com os argumentos padrão da integração em JSON. Informe as suas credenciais da Upstash e as suas variáveis, como descreve a próxima seção.

6. **Selecione Save**

A instância é listada na aba **Functions Instances**.

### Argumentos

A instância recebe as suas credenciais da Upstash e as suas variáveis:

```json
{
  "url": "https://region-database.upstash.io",
  "token": "YourUpstashToken",
  "ttl": 10,
  "ttl_wait": 180,
  "capacity": 2
}
```

| Variável   | Obrigatória | Descrição                                                                                                                                                                       |
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `url`      | Sim         | A string de URL que conecta ao Upstash Redis. No seu Upstash Console, copie a `UPSTASH_REDIS_REST_URL` da página do seu banco de dados                                          |
| `token`    | Sim         | O token que acessa o banco de dados Upstash Redis. No seu Upstash Console, copie o `UPSTASH_REDIS_REST_TOKEN` da página do seu banco de dados                                   |
| `ttl`      | Sim         | O tempo máximo, em segundos, que um usuário pode permanecer no seu site. Exemplo: `180`                                                                                         |
| `ttl_wait` | Sim         | O tempo máximo, em segundos, que um usuário pode ficar inativo na sala de espera sem perder o seu lugar, por exemplo depois de fechar a aba ou a janela do site. Exemplo: `180` |
| `capacity` | Sim         | O número máximo de conexões simultâneas permitidas no seu site. Exemplo: `10`                                                                                                   |

---

## Crie a regra

A instância não coloca nada na fila até que uma regra a execute. Uma regra do [Rules Engine para 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 o seu firewall e selecione a aba **Rules Engine**.

2. **Selecione + Rule**

3. **Nomeie a regra**

   Em **Name**, informe um nome. Por exemplo: `Run Upstash Waiting Room`.

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 cada requisição ao domínio do critério.

---

## Vincule o firewall ao workload

O vínculo fica no deployment do workload, então crie um deployment que nomeia 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 imprime 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 do Upstash Waiting Room em cada uma delas.

---

## Como funciona

Quando o seu site recebe uma requisição, o firewall executa a integração. A integração verifica se há espaço disponível:

- Se há espaço, a integração move a requisição da fila de espera para a fila de liberação.
- Se não há espaço, a integração redireciona a requisição para a sala de espera, onde ela recebe um número na fila.

---

## Monitore a sala de espera

Você pode monitorar a atividade da sala de espera no Upstash Dashboard.

---

## Próximos passos

- [Integrações do Marketplace](/pt-br/documentacao/plataforma/marketplace/integracoes.md): Cada integração que o Azion Marketplace oferece, e onde cada uma roda.
- [Rules Engine para Firewall](/pt-br/documentacao/plataforma/firewall/rules-engine.md): Cada critério e behavior 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 sua versão mais recente.
