# Deploy do template Upstash Rate Limit

import Tag from '~/components/webkit/Tag.vue';

<Tag severity="info">
Preview
</Tag>

O template **Upstash Rate Limit** ajuda você a implementar rate limiting em um ambiente serverless, sem a necessidade de uma extensa configuração manual. Este template inclui configurações para **limiting requests** e **window limit**.

Funciona em conjunto com o Azion **Functions**, sendo possível ajustar a configuração inicial com base nos args. Além disso, este template cria um novo repositório do GitHub que permite um fluxo de trabalho de implantação contínua, ou *continuous deployment*. Desta forma, você pode configurar e personalizar ainda mais a configuração para atender às suas necessidades, obtendo fácil gerenciamento e entrega de seu conteúdo personalizado.

___

## Pré-requisitos

Para começar a usar este template, você precisa:

- Criar uma [conta Upstash](https://console.upstash.com/).
- Criar um banco de dados global com a melhor latência de edge disponível no [Upstash Console](https://console.upstash.com/).
- Ter uma [conta no GitHub](https://github.com/signup) para conectar com a Azion e criar seu novo repositório.
  - Cada push será implantado automaticamente neste repositório para manter seu projeto atualizado.
- O template usa [Functions](/pt-br/documentacao/produtos/build/applications/functions/). Isso pode gerar custos relacionados ao uso. Consulte a [página de preços](/pt-br/documentacao/produtos/precos/) para mais informações.

:::caution[Atenção]
Qualquer custo gerado pelo uso do Upstash será processado e cobrado separadamente na plataforma do Upstash. Visite a [documentação do Upstash](https://docs.upstash.com/redis/features/globaldatabase#pricing) para obter mais detalhes.
:::

---

## Implante o template

Você pode obter e configurar seu template pelo Azion Console. Para implantá-lo facilmente no edge, clique no botão abaixo.

  <DocButton
    label="Implantar"
    href="https://console.azion.com/create/upstash/upstash-ratelimit"
    icon="ai ai-azion"
    size="medium"
  />

---

## Configure o template

No formulário de configuração, forneça as informações para configurar sua aplicação. Preencha os campos apresentados.

Os campos identificados com asterisco são obrigatórios.

1. Conecte a Azion com sua conta no GitHub.
- Uma janela pop-up será aberta para confirmar a instalação da [Azion GitHub App](/pt-br/documentacao/produtos/guias/azion-github-app/), uma ferramenta que conecta sua conta do GitHub com a plataforma da Azion.
- Defina suas permissões e acesso ao repositório conforme desejado.
2. Selecione o **Git Scope** com o qual trabalhar.
3. Defina um nome para sua application.
- O bucket para armazenamento e a function usarão o mesmo nome.
- Use um nome único e fácil de lembrar. Se o nome já tiver sido usado, a plataforma retornará uma mensagem de erro.
4. Complete os campos:
- **Upstash Redis Rest URL** *: a URL para acessar seu banco de dados Upstash usando REST.
   - Acesse o console do Upstash e copie o `UPSTASH_REDIS_REST_URL` na página do banco de dados.
- **Upstash Redis Rest Token** *: o token para autorizar o acesso ao seu banco de dados Upstash usando REST.
   - Acesse o console do Upstash e copie o `UPSTASH_REDIS_REST_TOKEN` na página do banco de dados.
- **Request Limit**: o número máximo de solicitações. Exemplo: `6`.
- **Window Limit**: a janela de tempo para novas solicitações. Exemplo: `10 s` (pode ser: "ms" | "s" | "m" | "h" | "d").
4. Clique no botão **Deploy** para iniciar o processo de implantação.

Durante a implantação, você poderá acompanhar o processo através de uma janela mostrando os logs. Quando estiver concluída, a página mostra informações sobre a aplicação e algumas opções para continuar sua jornada.

:::note[Nota]
Ao clicar no link da application, você pode ver como ela fica no navegador. No entanto, leva um certo tempo para propagar e configurá-la nas edge locations da Azion. Pode ser necessário aguardar alguns minutos para que a URL seja ativada e para que a página da aplicação seja efetivamente exibida no navegador.
:::

### Principais configurações

O template **Upstash Rate Limit** cria uma nova application e seu domínio na Azion. Ele também cria uma function, para fornecer os argumentos do rate limiting, e um novo repositório em sua conta do GitHub com base em um [template público](https://github.com/aziontech/) que inclui uma GitHub Action para facilitar um continuous deployment.

Nesta função, as bibliotecas `upstash/redis` e `upstash/ratelimit` são integradas, conectando-se ao seu Banco de Dados Global Upstash e verificando na rota `/login` se está dentro dos **Window** e **Limit** configurados. A chave para os limites são os metadados `["remote_addr"]`.

#### Comportamento do rate limiting

Quando um cliente excede o **Request Limit** configurado dentro do **Window Limit** definido, a função retorna uma resposta `HTTP 429 Too Many Requests`. O cliente não é bloqueado permanentemente — a limitação é temporária e está diretamente vinculada ao **Window Limit** configurado.

Quando a janela de tempo é reiniciada, o contador de requisições é zerado e o cliente pode fazer requisições novamente até o limite configurado. Por exemplo, se você definir um limite de `6` requisições por `10 s`, um cliente que exceder 6 requisições em qualquer janela de 10 segundos receberá respostas `429` até que essa janela expire. Após a reinicialização da janela, as requisições são atendidas normalmente.

:::tip
Ajuste os valores de **Window Limit** e **Request Limit** nos argumentos da sua function para ajustar o comportamento do rate limiting ao seu caso de uso. Você pode atualizar essas configurações a qualquer momento pelo [Azion Console](https://console.azion.com).
:::

___

## Gerencie seu projeto

Considerando que a configuração inicial pode não ser ideal para o seu aplicativo web específico, todas as configurações podem ser personalizadas sempre que você precisar usando o Azion Console. Depois que o modelo for implantado, você também terá controle total sobre a personalização de sua conta e banco de dados do Upstash.

Para gerenciar e editar as configurações da sua application no Azion, siga estas etapas:

1. [Acesse o Azion Console](https://console.azion.com).
2. No canto superior esquerdo, selecione **Products menu** > **Applications**.
- Você será redirecionado para a página de **Applications**. Ela lista todas as applications que você criou.
3. Encontre a aplicação pelo nome que você definiu durante a execução do template e selecione-a.
- A lista é organizada em ordem alfabética. Você também pode usar a **barra de busca** localizada no canto superior esquerdo da lista; atualmente, ela é filtrada apenas pelo **Application Name**, ou nome da application.

Depois de selecionar a application em que você trabalhará, você será direcionado para uma página que contém todas as configurações que você pode ajustar.

:::tip
Leia a documentação sobre o [gerenciamento de applications](/pt-br/documentacao/produtos/build/applications/primeiros-passos/) para obter mais detalhes. Para perguntas específicas relacionadas ao Upstash, consulte a [documentação do Upstash](https://docs.upstash.com/).
:::

### Adicione um domínio personalizado

A application criada durante a implantação tem um Azion Workload Domain atribuído para torná-la acessível através do navegador. O domínio tem o seguinte formato: `xxxxxxxxxx.map.azionedge.net/`. No entanto, você pode adicionar um domínio personalizado para que os usuários acessem sua application por meio dele.

import DocButton from '~/components/webkit/DocButton.vue';

<DocButton href="/pt-br/documentacao/produtos/guias/configurar-dominio/" label="consulte o guia para configurar domínios" kind="secondary" size="medium" /> 

---