Criando uma Azure Function para verificar preços de ações (C#)
Azure Functions em C#: consulte ações e envie por e-mail com Resend (Parte 1)
Crie uma Function em .NET com Timer Trigger, consuma a API Alpha Vantage e mande a cotação por e-mail
Neste passo a passo você vai criar uma Azure Function em C# (.NET) com Timer Trigger para consultar a cotação de ações na API Alpha Vantage e enviar um e-mail com o último fechamento usando o serviço Resend. O vídeo cobre a instalação das ferramentas, criação do projeto com Azure Functions Core Tools, configuração de secrets no local.settings.json, debug local com Azurite, parsing do JSON (System.Text.Json), montagem de HTML e envio via HTTP (sem SDK). Ao final, é mostrado o e-mail recebido com a cotação.
O que você vai aprender:
- Instalar e validar Azure Functions Core Tools e Azurite
- Criar Function App (.NET) e Timer Trigger (cron com segundos)
- Obter e configurar API Keys (Alpha Vantage e Resend) em local.settings.json
- Consumir a API TIME_SERIES_DAILY do Alpha Vantage
- Parsear JSON com propriedades "peculiares" (Time Series com datas e "4. close")
- Gerar HTML de e-mail e enviar via Resend com HttpClient (Authorization Bearer)
- Debug local no VS Code com breakpoints
- Entender cuidados: limites da API (25 req/dia na camada free), bounce de e-mails temporários
Pré-requisitos:
- Node.js e npm
- NET SDK 8 instalado
- VS Code com extensões C#, Azure Functions e Azure Resources
- Conta Resend com domínio verificado (para envio)
- Chave gratuita da Alpha Vantage
Comandos-chave usados:
- npm i -g azure-functions-core-tools@4
- npm i -g azurite
- azurite --version
- func --version
- dotnet --list-sdks
- func init nome --worker-runtime dotnet --target-framework net8.0
- func new --name FunctionName --template "Timer trigger"
- F5 (debug no VS Code)
Observações:
- Não versionar local.settings.json (contém segredos; já está no .gitignore por padrão)
- A Alpha Vantage free impõe limites (25 requisições/dia); evite intervalos muito curtos em testes
- Alguns provedores bloqueiam e-mails temporários; prefira um e-mail real verificado no domínio do Resend
---
### Capítulos
00:00:00 API Alpha Vantage e recursos na descrição
00:02:31 Checando .NET e alvo em .NET 8
00:02:54 Organização de pastas do projeto
00:03:17 Instalando Azure Functions Core Tools (npm)
00:04:37 Instalando o Azurite (Storage local)
00:06:23 Preços e camada gratuita do Azure Functions
00:07:36 dotnet new vs func init; criando o projeto
00:09:38 Verificando SDKs do .NET
00:12:22 Criando a Function (func new) com Timer Trigger
00:16:22 Cron com 6 campos (inclui segundos)
00:18:31 Escolha de ativos (Petrobras, Apple, etc.)
00:19:40 Extensões VS Code recomendadas
00:21:07 Configurando Resend e gerando API Key
00:23:02 Adicionando Resend API Key no local.settings.json
00:26:17 Gerando API Key gratuita (limites da Alpha Vantage)
00:30:22 Documentação da Alpha Vantage e endpoints
00:31:30 TIME_SERIES_DAILY e base URL
00:35:37 Async/await e EnsureSuccessStatusCode
00:36:21 Subindo o Azurite e preparando o debug
00:37:01 Ajustando o timer para 2 minutos
00:42:00 Parse com JsonDocument e extração do último fechamento
00:45:03 Construindo o HTML do e-mail
00:47:03 Generalizando para "stock" (dinâmico)
00:47:31 Método de envio de e-mail via Resend
00:48:27 Payload JSON e header Authorization (Bearer)
00:51:34 Debug do envio; conferindo valores
00:57:12 Serialização e SendAsync
00:58:20 Verificando logs do Resend
Criando uma Azure Function para verificar preços de ações (C#)
Azure Functions em C#: consulte ações e envie por e-mail com Resend (Parte 2)
Crie uma Function em .NET com Timer Trigger, consuma a API Alpha Vantage e mande a cotação por e-mail
Neste passo a passo você vai criar uma Azure Function em C# (.NET) com Timer Trigger para consultar a cotação de ações na API Alpha Vantage e enviar um e-mail com o último fechamento usando o serviço Resend. O vídeo cobre a instalação das ferramentas, criação do projeto com Azure Functions Core Tools, configuração de secrets no local.settings.json, debug local com Azurite, parsing do JSON (System.Text.Json), montagem de HTML e envio via HTTP (sem SDK). Ao final, é mostrado o e-mail recebido com a cotação.
Continuação prática da série: publicamos a Azure Function em C# que consulta cotações (Alpha Vantage) e envia e-mails com Resend. Você verá como preparar o ambiente, criar e organizar recursos (Resource Group, Storage Account, Function App), configurar segredos (API Keys), publicar via Azure Functions Core Tools e VS Code, conferir no portal do Azure, ajustar o agendamento (CRON) e, por fim, limpar tudo com segurança.
O que você vai aprender:
- Instalar/usar Azure CLI (az) e fazer login
- Criar Resource Group, Storage Account (Standard_LRS) e Function App (Consumption, Windows, .NET/Functions v4)
- Configurar app settings (Resend e Alpha Vantage) via CLI
- Publicar com func azure functionapp publish
- Verificar recursos e logs no portal do Azure
- Ajustar CRON (NCRONTAB) para executar diariamente às 08:00
- Deploy alternativo pelo VS Code (Deploy to Azure)
- Limpeza total com az group delete (atenção!)
Pré-requisitos:
- Node.js e npm
- NET SDK 8 instalado
- VS Code com extensões C#, Azure Functions e Azure Resources
- Conta Resend com domínio verificado (para envio)
- Chave gratuita da Alpha Vantage
---
### Capítulos
00:00:00 Preparos: parar Azurite, terminal e Azure CLI
00:01:34 Instalação do Azure CLI: opções (Windows/Linux/macOS/Docker/Cloud Shell)
00:02:36 az login e seleção da assinatura
00:03:24 Por que usar Resource Group e criação com az group create
00:04:53 Criando Storage Account (nome, região, SKU Standard_LRS)
00:07:25 Criando a Function App (Consumption, runtime .NET, v4, Windows)
00:11:03 Conferindo a Function App com az functionapp list -o table
00:12:23 Listando todos os recursos do Resource Group (az resource list)
00:13:18 Publicação: visão geral e atenção aos segredos
00:14:03 Enviando app settings (Resend/Alpha Vantage) via CLI
00:16:50 Publicando com func azure functionapp publish
00:17:27 Conferindo no portal do Azure (RG, Function App, Storage, App Insights)
00:19:12 Logs e atualização de CRON; corrigindo agendamento para 08:00
00:20:53 Deploy alternativo pelo VS Code (Deploy to Azure)
00:23:38 Limpando tudo com az group delete (alertas e boas práticas)
00:24:49 Nota: envio automatizado de settings e encerramento da exclusão