Bem-vindo ao Dia 5 dos 12 Dias de DigitalOcean! Ontem, você configurou seu Serviço de Lembrete de Aniversário para rodar no DigitalOcean Functions, o que significa que agora está sem servidor e pronto para a nuvem. 🎉 Hoje, você dará um passo a mais automatizando-o para funcionar em sua própria programação—sem necessidade de entrada manual.
No final deste guia, seu serviço (ou qualquer outra função em que você esteja trabalhando) será executado automaticamente em um horário definido todos os dias. Isso significa que não será mais necessário lembrar de acioná-lo você mesmo—ele simplesmente funciona.
Por que Automatizar?
Implantar sua função na nuvem foi uma grande conquista ontem, mas ter que executá-la manualmente anula o propósito da automação. O foco de hoje é agendar o serviço para funcionar automaticamente—como um relógio—para que você possa configurá-lo e esquecê-lo. O DigitalOcean Functions possui agendamento integrado usando Gatilhos para esse propósito exato, e você tem duas maneiras de configurá-lo.
🚀 O que Você Vai Aprender
No final de hoje, você saberá como:
- Configurar um gatilho diário para executar sua função automaticamente.
- Aprender duas maneiras de fazer isso—por meio do Painel de Controle da DigitalOcean ou com o
doctl
CLI eproject.yml
. - Testar a configuração para garantir que funcione.
🛠 O que Você Vai Precisar
Antes de começar, certifique-se de ter o seguinte:
- Uma função já implantada na DigitalOcean (por exemplo, o Serviço de Lembrete de Aniversário do Dia 4: Construindo um Serviço de Lembrete de Aniversário) para automatizar com gatilhos.
- Se você estiver usando o
doctl
CLI, precisará do arquivoproject.yml
para sua função. Você pode conferir Dia 4 para instruções sobre como instalar e configurar odoctl
CLI e criar o arquivoproject.yml
.
🧑🍳 Receita para o Dia 5: Automatizando Funções com Gatilhos
Passo 1: Configure um Gatilho para sua Função
A DigitalOcean oferece duas opções para configurar gatilhos:
- Opção 1: Use o Painel de Controle para uma configuração rápida e fácil.
- Opção 2: Use o
doctl
CLI para um controle mais robusto e programático.
Aviso: Lembre-se de que os acionadores criados no Painel de Controle são perdidos se você reimplantar a função usando a CLI. Se você estiver reimplantando com frequência, use Opção 2 para adicionar acionadores diretamente ao arquivo project.yml
.
Opção 1: Usando o Painel de Controle para Criar um Acionador
A maneira mais fácil de configurar um acionador é através do Painel de Controle da DigitalOcean. É rápido, não requer configuração e é ideal para configurações simples únicas.
- Navegue até a página principal de Funções no painel da DigitalOcean.
- Encontre sua função (por exemplo,
lembretes/aniversários
) e clique na guia Acionadores.
- Clique em Criar Acionador, adicione um Nome para o seu acionador. Isso pode ser qualquer coisa descritiva, como
acionador-diario-de-aniversario
. O nome deve conter apenas caracteres alfanuméricos, traços e pontos. - Adicione uma expressão cron para definir o agendamento. Por exemplo,
0 9 * * *
significa que a função será executada todos os dias às 9:00.
Observação: Se você não tem certeza de como o cron funciona, confira crontab.guru para um guia útil.
- Salve o acionador.
Depois de criar o acionador, é uma boa ideia testá-lo para garantir que tudo funcione como esperado. Pule para a seção Testar a Automação abaixo para aprender como.
Aviso: Embora o painel seja simples e eficaz, qualquer gatilho que você criar aqui será sobrescrito ou excluído se você reenviar a função usando o CLI. Para atualizações frequentes ou implantações programáticas, vá para Opção 2.
Opção 2: Usando o doctl
CLI com project.yml
Você também pode criar gatilhos adicionando-os diretamente ao seu project.yml arquivo. Este método é mais confiável para reimplantações frequentes porque garante que seus gatilhos estejam sempre incluídos na configuração da função. Ao contrário da opção do Painel de Controle descrita anteriormente, essa abordagem evita que os gatilhos sejam sobrescritos ou perdidos durante as reimplantações.
Aqui está como você pode configurá-lo:
-
Abra o seu arquivo
project.yml
de Dia 4: Implantando Notificações de Aniversário com Funções do DigitalOcean. Ele pode parecer algo assim: -
Adicione uma seção
triggers
à configuração da sua função para definir o agendamento: -
Arquivo
project.yml
final atualizado:Isso diz à DigitalOcean para executar a função
birthdays
todos os dias às 9:00 AM.-
triggers
seção: Define o nome, tipo e cronograma para o gatilho. Você pode nomear seu gatilho de maneira descritiva, comodaily-birthday-trigger
. -
cron
: Especifica o horário em que a função será executada diariamente em UTC. A expressão cron0 9 * * *
, por exemplo, agenda a função para ser executada todos os dias às 9:00 AM.
-
-
Salve o arquivo e implante-o executando o seguinte comando a partir do diretório que contém a pasta
my-birthday-reminder-service
:Importante: Certifique-se de executar o comando a partir do diretório pai, não dentro da pasta
my-birthday-reminder-service
. Executá-lo no local errado pode resultar em um erro como este: -
Uma vez que a implantação for bem-sucedida, você verá uma mensagem de confirmação semelhante a esta:
-
Vá para o seu painel para verificar se o gatilho foi criado na seção Funções.
Dica Profissional: Para testar seu gatilho, defina temporariamente a expressão cron para alguns minutos a partir de agora (por exemplo, 28 9 * * *
se for 9h25). Após confirmar que funciona, atualize-a de volta para o seu cronograma pretendido e reimplante.
Passo 2: Teste a Automação
Vamos testar seus gatilhos para garantir que estão funcionando. Em vez de esperar que sejam acionados no cronograma habitual, você pode defini-los temporariamente para serem executados em alguns minutos. Veja como fazer:
-
Defina a expressão cron para o seu gatilho para alguns minutos a partir do horário atual (em UTC). Por exemplo, se for 9h25 UTC, defina a expressão cron para
28 9 * * *
para que a função seja executada às 9h28 UTC.Nota: Não tem certeza de como converter seu horário local para UTC? Ferramentas como Conversor de Fuso Horário podem ajudar.
-
Salve o gatilho atualizado (se estiver usando o Painel de Controle) ou reimplante seu arquivo
project.yml
atualizado (se estiver usando a CLI): -
Espere o gatilho executar, depois verifique os logs de ativação para confirmar que a função foi executada com sucesso:
Nota: Os logs de ativação registram detalhes sobre quando sua função foi executada, incluindo se ela foi executada com sucesso ou encontrou erros. Eles são uma maneira útil de verificar se o seu gatilho foi acionado no horário programado.
Este comando retornará os detalhes da ativação mais recente da sua função. Por exemplo, você pode ver algo assim:
Isso confirma que o gatilho foi acionado e a função foi ativada com sucesso! 🎉
Nota: Uma vez que você tenha verificado que tudo está funcionando, atualize a expressão cron para o cronograma pretendido (por exemplo, 0 9 * * *
para 9:00 AM UTC diariamente) e salve ou reimplante.
Uma Nota Rápida sobre Logs
Embora o comando logs de ativação
seja uma ótima maneira de verificar execuções recentes, às vezes você precisará de logs mais detalhados para depurar ou investigar problemas com sua função. A DigitalOcean também oferece opções para encaminhar esses logs para serviços de logging externos, facilitando o monitoramento e a resolução de problemas da sua aplicação ao longo do tempo.
No Dia 6, você aprenderá a visualizar logs diretamente, interpretá-los de forma eficaz e configurar o encaminhamento de logs para serviços externos como Logtail ou Papertrail. Essas ferramentas ajudarão você a acompanhar facilmente o desempenho da sua função.
🎁 Resumo
Aqui está o que você conquistou hoje:
- Você automatizou seu Serviço de Lembrete de Aniversário (ou qualquer outra função) para ser executado diariamente.
- Você aprendeu duas maneiras de configurar gatilhos—através do Painel de Controle e com o
doctl
CLI. - Você testou sua configuração para garantir que funcione como esperado.
Aqui estão os tutoriais anteriores desta série:
- Dia 1: Configurando um Banco de Dados PostgreSQL para Lembretes de Aniversário
- Dia 2: Conectando-se ao Seu Banco de Dados PostgreSQL com Python
- Dia 3: Verificando Aniversários e Enviando Notificações por SMS
- Dia 4: Implantando Notificações de Aniversário em Funções
Próximo: Agora que seu serviço está funcionando de forma independente, o próximo passo é monitorá-lo efetivamente. No próximo tutorial, você aprenderá como visualizar os logs da sua função e encaminhá-los para serviços externos para simplificar o rastreamento e a resolução de problemas. Até lá!
Source:
https://www.digitalocean.com/community/tutorials/automating-birthday-reminders-with-triggers