Como utilizar o template QStash EdgeFunction Scheduler através da Azion

Preview

O template QStash EdgeFunction Scheduler foi projetado para configurar e gerenciar uma edge function personalizada, que recebe um agendamento configurado pelo usuário e o despacha através do QStash, agendador e gestor de tarefas e mensagens para tempos de execução serverless.


Antes de usar este template, você precisa:

  1. Criar uma conta no Upstash.
  2. No console do Upstash, obter sua Current Signing Key, a Next Signing Key e o QStash Token na aba QStash.
  3. Gerar seu token pessoal do GitHub.

Você também deve ativar:

Edge Functions

Para fazer isso:

  1. Acesse o Azion Console.
  2. Selecione Account menu > Billing & Subscriptions.
  3. Clique na aba Subscriptions.
  4. Active o switch do módulo.

Para obter o template QStash EdgeFunction Scheduler, acesse o Azion Console e selecione a opção Start with a template na página inicial.

Isso abrirá uma nova página onde você pode selecionar o card do QStash EdgeFunction Scheduler.


Na página do template, clique na aba Settings para abrir o formulário de configuração e fornecer as informações para configurar sua aplicação.

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

  • Application Name *: o nome de sua edge application. Ele é usado para identificar e gerenciar sua aplicação na plataforma da Azion.
    • Use um nome único e fácil de lembrar. Se o nome já tiver sido usado, a plataforma retornará uma mensagem de erro.
  • QStash Current Signing Key *: uma string para assinar todas as mensagens enviadas para o destino.
    • Acesse o console do Upstash e copie a informação QSTASH_CURRENT_SIGNING_KEY na aba Qstash.
  • QStash Next Signing Key *: uma string usada para assinar mensagens depois de você ter girado suas chaves de assinatura.
    • Acesse seu console do Upstash e copie a informação QSTASH_NEXT_SIGNING_KEY na aba Qstash.
  • GitHub Personal Token *: seu token pessoal do GitHub.

Depois de preencher todas as informações, clique no botão Next, localizado no canto inferior direito. Isso 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, uma nova página será exibida, confirmando que a edge application foi criada com sucesso.

Esta página mostra as seguintes seções:

  • A seção Access your Edge Application, que inclui o link para visitar e explorar sua aplicação.
  • O Build Summary contém o nome e a função da aplicação.
  • A aba Deployment details pode ser aberta para acessar os logs relacionados à implantação.
  • What do you want to do next? fornece recomendações sobre opções avançadas para aprimorar sua edge application: Customize Domain, Manage Edge Application, View Edge Application Metrics, View Edge Application Logs e o botão Back to Home.

Quando implantado, este template cria uma edge function que inclui os argumentos fornecidos pelo usuário. Ele também cria um novo repositório do GitHub que inclui uma automação para permitir continuous deployment. Além disso, o modelo cria e instancia uma edge application e seu domínio para facilitar a interação com a edge function.


Depois que a implantação for concluída e propagada, você poderá começar a agendar tarefas.

Para fazer isso, você tem duas opções: via terminal ou via console Upstash.

  1. Obtenha seu domínio da edge application.
  2. No console do Upstash, copie a informação QSTASH_TOKEN na aba QStash.
  3. Em seu ambiente de desenvolvimento, abra o terminal.
  4. Faça uma requisição HTTP POST para a URL especificada para agendar suas mensagens.

Use os seguintes exemplos para sua solicitação, de acordo com o intervalo necessário:

Terminal window
curl --request POST "https://qstash.upstash.io/v1/publish/{add your domain here}" \
-H "Authorization: Bearer {add your QStash token here}" \
-H "Content-Type: application/json" \
-d "{ \"hello\": \"world\"}"
Terminal window
curl --request POST "https://qstash.upstash.io/v1/publish/{add your domain here}" \
-H "Authorization: Bearer {add your QStash token here}" \
-H "Content-Type: application/json" \
-H "Upstash-Cron: * * * * *" \
-d "{ \"hello\": \"world\"}"
Terminal window
curl --request POST "https://qstash.upstash.io/v1/publish/{add your domain here}" \
-H "Authorization: Bearer {add your QStash token here}" \
-H "Content-Type: application/json" \
-H "Upstash-Cron: */10 * * * *" \
-d "{ \"hello\": \"world\"}"
Terminal window
curl --request POST "https://qstash.upstash.io/v1/publish/{add your domain here}" \
-H "Authorization: Bearer {add your QStash token here}" \
-H "Content-Type: application/json" \
-H "Upstash-Cron: 0 * * * *" \
-d "{ \"hello\": \"world\"}"

Onde:

FlagDescrição
--request POSTEspecifica o método de requisição enviada. Nesse caso, um método HTTP POST para postar ou agendar uma mensagem HTTP.
-H "Autorization"Fornece informações de autorização através de um token para autenticação. Você deve adicionar seu token QStash aqui.
-H "Content-Type"Especifica o tipo de conteúdo do corpo da requisição. Nesse caso, formato JSON.
-H "Upstash-Cron"Programa uma tarefa semelhante ao cron no Upstash, permitindo que você automatize tarefas em intervalos específicos.
dFornece os dados para o corpo da requisição, incluindo o payload JSON. As barras invertidas (\) antes das aspas duplas (") são usadas para garantir que as aspas sejam tratadas como parte dos dados dentro do payload JSON.

Pronto. A sua tarefa está agendada e será executada de acordo o agendamento definido. Suas tarefas agendadas ficam visíveis no console do Upstash, dentro da aba QStash*, para sua revisão e monitoramento.

  1. Copie seu domínio da edge application da Azion.
  2. Vá para o console do Upstash e abra a aba QStash.
  3. Preencha o formulário com as informações solicitadas.
  • No campo Type, selecione Scheduled e escolha o delay.
  • Como alternativa, selecione Once para enviar uma mensagem imediata e uma única vez.
  1. Clique no botão Schedule.

Pronto. Sua tarefa está agendada e visível na seção Scheduled Jobs para sua revisão e monitoramento.


Considerando que a configuração inicial pode não ser ideal para sua edge application, todas as configurações podem ser personalizadas sempre que você precisar usando o Azion Azion Console. Depois que o template for implantado, você também terá controle total sobre a personalização de sua conta e configurações do QStash.

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

  1. Acesse o Azion Console.
  2. No canto superior esquerdo, selecione Products menu > Edge Application.
  • Você será redirecionado para a página de Edge Application. Ela lista todas as edge applications que você criou.
  1. Encontre a edge application relacionada ao template Qstash Scheduler 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 filtra apenas pelo nome das aplicações.

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

Uma vez que o template é implantado, você pode editar e atualizar seus args e código, bem como implementar um fluxo de trabalho de continuous deployment, ou implantação contínua. No entanto, você precisará primeiro declarar seus secrets no repositório do GitHub do seu projeto para concluir com sucesso o segundo build com as alterações. Assim que esta segunda compilação for concluída, você poderá gerenciar seu projeto com um fluxo de trabalho de implantação contínua e editar os argumentos conforme desejado.

Para fazer isso, abra seu repositório QStash EdgeFunction Scheduler no GitHub. Em seguida, vá para Settings > Secrets and Variables > Action para adicionar suas variáveis, seguindo estas instruções:

  1. Adicione o personal token da Azion aos segredos:
Terminal window
AZION_PERSONAL_TOKEN=<value>
  1. Adicione os ambientes para uso no action workflow no arquivo main.yml, dentro da pasta .github/workflows do seu repositório:
.github/workflows/main.yml
- name: edge-...
id: azion_edge
...
with:
....
azionPersonalToken: ${{ secrets.AZION_PERSONAL_TOKEN }}
....
  1. Adicione as Signing Keys do Upstash aos secrets, sendo:
  • QSTASH_CURRENT_SIGNING_KEY *: uma string para assinar todas as mensagens enviadas para o destino.
  • Acesse o console do Upstash e copie a QSTASH_CURRENT_SIGNING_KEY na aba Qstash.
  • QSTASH_NEXT_SIGNING_KEY *: uma string usada para assinar mensagens depois de você ter girado suas signing keys.
  • Acesse seu console do Upstash e copie a QSTASH_NEXT_SIGNING_KEY na aba QStash.
Terminal window
QSTASH_CURRENT_SIGNING_KEY=<value>
QSTASH_NEXT_SIGNING_KEY=<value>
  1. Adicione os ambientes para uso no action workflow no arquivo main.yml, dentro da pasta .github/workflows do seu repositório:
.github/workflows/main.yml
- name: Create args file
run: |
...
"QSTASH_CURRENT_SIGNING_KEY": "${{ secrets.QSTASH_CURRENT_SIGNING_KEY }}",
"QSTASH_NEXT_SIGNING_KEY": "${{ secrets.QSTASH_NEXT_SIGNING_KEY }}"
...
  1. Abra um pull request com as alterações na main branch e inicie a implantação automática.

Agora, seu projeto está pronto para trabalhar com um fluxo de trabalho de implantação contínua, atualizando instantaneamente quaisquer alterações na aplicação ou no repositório.

A edge application criada durante a implantação tem um domínio Azion 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 edge application por meio dele.

Leia a documentação de Domains

Contribuidores