Envie email transacional com Resend e Functions
Construa um endpoint Hono em Azion Functions que chama a API do Resend, armazene a API key como variável de ambiente e faça o deploy com Azion CLI.
Neste tutorial, você vai construir um endpoint HTTP em Azion Functions que envia um email transacional pelo Resend. Você vai criar o projeto a partir de um template, escrever o handler, armazenar a API key, fazer o deploy do projeto e enviar uma mensagem real.
O projeto finalizado está no repositório edge-functions-examples.
Pré-requisitos
- Uma conta Azion. Para criar uma, consulte Como criar uma conta na Azion.
- Uma conta Resend com uma API key.
- Azion CLI instalada. Para as opções de instalação, consulte Azion CLI.
- Node.js versão 18 ou superior.
1. Crie o projeto a partir do template Hono
Para autorizar a CLI e criar o projeto:
Execute o comando de login:
Sem as flags de credencial, a CLI abre um fluxo pelo navegador. Ela armazena as credenciais localmente, e todo comando seguinte é autorizado na sua conta.
Execute o comando de inicialização no diretório que guarda seus projetos:
O comando abre uma jornada interativa.
Digite um nome, ou pressione enter para aceitar a sugestão:
A CLI lista os presets que ela suporta:
A CLI oferece um servidor de desenvolvimento local e um deploy. Responda N para os dois, porque o handler ainda não está escrito:
Vá para o diretório do projeto e instale as dependências dele:
O diretório do projeto contém o template Hono e as dependências dele.
2. Escreva o handler que chama a API do Resend
O handler responde a uma requisição GET no path raiz, envia a mensagem para a API do Resend e retorna a resposta da API em JSON. O campo entry do azion.config.js indica o arquivo de entrada do projeto. Abra esse arquivo e substitua o conteúdo dele por:
Defina EMAIL_TO com o endereço que recebe a mensagem. O campo html carrega o corpo da mensagem como uma string HTML, então um template literal substitui os valores que mudam por destinatário.
A última linha exporta a aplicação como um handler ES Modules, o padrão que Azion recomenda em vez do padrão legado Service Worker. Para os dois padrões e a migração entre eles, consulte Migre padrões de handler em Functions.
3. Armazene a API key do Resend como variável de ambiente
O handler lê RESEND_API_KEY em tempo de execução, então a chave fica fora dos arquivos do projeto e fora do controle de versão. Para criar a variável na sua conta:
Uma variável cuja chave contém password, pwd, secret, key, hash, encrypted, passcode, auth ou token é enviada como secret por padrão. A flag --secret true repete esse padrão aqui. Dê à API key do Resend o menor conjunto de permissões que a chamada de envio exige.
Para substituir o valor depois, execute azion update variables e faça um novo deploy do projeto. Uma alteração em uma variável não chega a uma função que já está rodando.
A conta guarda a variável, e o handler a lê pela chave após o deploy.
4. Faça o deploy do projeto
Para compilar o projeto e publicá-lo:
O deploy envia o código da função, configura a aplicação, define as regras de roteamento e aplica as variáveis de ambiente e os segredos. Ao final, ele retorna um domínio no formato https://xxxxxxx.map.azionedge.net. Azion abre o navegador na página do Azion Console que carrega os logs do deploy.
O endpoint responde no domínio retornado alguns minutos após a propagação.
5. Envie o primeiro email
Para executar o handler, requisite o path raiz do domínio que o deploy retornou:
O corpo da resposta é o JSON que a API do Resend retorna para a requisição. A mensagem chega na caixa de entrada do endereço definido em EMAIL_TO, com o assunto hello world e o corpo it works!.
O endpoint agora envia um email transacional em toda requisição para o path raiz dele.