Dicas de .NET
Como criar e publicar uma Azure Function em C# para consultar o mercado de ações (completo)
Sobre o Vídeo
Aprenda do zero ao deploy como criar e publicar uma Azure Function em C# (.NET 8) para consultar preços de ações usando a API Alpha Vantage e enviar a cotação por e-mail com Resend.
## Neste guia completo você vai:
✔ Criar uma Azure Function com Timer Trigger (CRON com segundos)
✔ Consumir a API TIME_SERIES_DAILY da Alpha Vantage
✔ Fazer parsing de JSON com System.Text.Json
✔ Gerar HTML dinâmico para e-mail
✔ Enviar e-mail via HTTP usando HttpClient (sem SDK)
✔ Fazer debug local com Azurite
✔ Publicar na Azure usando Azure CLI
✔ Configurar Resource Group, Storage Account e Function App
✔ Ajustar o agendamento para execução diária
✔ Limpar todos os recursos com segurança
## Tecnologias usadas
✔ Azure Functions v4
✔ .NET 8
✔ C#
✔ Timer Trigger
✔ Azure CLI (az)
✔ Azure Functions Core Tools
✔ Azurite
✔ Alpha Vantage API
✔ Resend (envio de e-mail)
✔ VS Code
## O que você vai aprender na prática
✔ Instalar e validar Azure Functions Core Tools
✔ Criar projeto com func init
✔ Criar Function com func new
✔ Configurar secrets no local.settings.json
✔ Consumir API externa com HttpClient
✔ Trabalhar com JSON com propriedades como "4. close"
✔ Publicar com func azure functionapp publish
✔ Configurar app settings via CLI
✔ Ajustar CRON (NCRONTAB)
✔ Monitorar logs no portal do Azure
✔ Boas práticas para evitar vazamento de secrets
## 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
01:00:20 Preparos: parar Azurite, terminal e Azure CLI
01:00:38 Instalação do Azure CLI: opções (Windows/Linux/macOS/Docker/Cloud Shell)
01:01:40 az login e seleção da assinatura
01:02:28 Por que usar Resource Group e criação com az group create
01:03:57 Criando Storage Account (nome, região, SKU Standard_LRS)
01:06:29 Criando a Function App (Consumption, runtime .NET, v4, Windows)
01:10:07 Conferindo a Function App com az functionapp list -o table
01:11:27 Listando todos os recursos do Resource Group (az resource list)
01:12:22 Publicação: visão geral e atenção aos segredos
01:13:07 Enviando app settings (Resend/Alpha Vantage) via CLI
01:15:54 Publicando com func azure functionapp publish
01:16:30 Conferindo no portal do Azure (RG, Function App, Storage, App Insights)
01:18:16 Logs e atualização de CRON; corrigindo agendamento para 08:00
01:19:57 Deploy alternativo pelo VS Code (Deploy to Azure)
01:22:42 Limpando tudo com az group delete (alertas e boas práticas)
## Neste guia completo você vai:
✔ Criar uma Azure Function com Timer Trigger (CRON com segundos)
✔ Consumir a API TIME_SERIES_DAILY da Alpha Vantage
✔ Fazer parsing de JSON com System.Text.Json
✔ Gerar HTML dinâmico para e-mail
✔ Enviar e-mail via HTTP usando HttpClient (sem SDK)
✔ Fazer debug local com Azurite
✔ Publicar na Azure usando Azure CLI
✔ Configurar Resource Group, Storage Account e Function App
✔ Ajustar o agendamento para execução diária
✔ Limpar todos os recursos com segurança
## Tecnologias usadas
✔ Azure Functions v4
✔ .NET 8
✔ C#
✔ Timer Trigger
✔ Azure CLI (az)
✔ Azure Functions Core Tools
✔ Azurite
✔ Alpha Vantage API
✔ Resend (envio de e-mail)
✔ VS Code
## O que você vai aprender na prática
✔ Instalar e validar Azure Functions Core Tools
✔ Criar projeto com func init
✔ Criar Function com func new
✔ Configurar secrets no local.settings.json
✔ Consumir API externa com HttpClient
✔ Trabalhar com JSON com propriedades como "4. close"
✔ Publicar com func azure functionapp publish
✔ Configurar app settings via CLI
✔ Ajustar CRON (NCRONTAB)
✔ Monitorar logs no portal do Azure
✔ Boas práticas para evitar vazamento de secrets
## 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
01:00:20 Preparos: parar Azurite, terminal e Azure CLI
01:00:38 Instalação do Azure CLI: opções (Windows/Linux/macOS/Docker/Cloud Shell)
01:01:40 az login e seleção da assinatura
01:02:28 Por que usar Resource Group e criação com az group create
01:03:57 Criando Storage Account (nome, região, SKU Standard_LRS)
01:06:29 Criando a Function App (Consumption, runtime .NET, v4, Windows)
01:10:07 Conferindo a Function App com az functionapp list -o table
01:11:27 Listando todos os recursos do Resource Group (az resource list)
01:12:22 Publicação: visão geral e atenção aos segredos
01:13:07 Enviando app settings (Resend/Alpha Vantage) via CLI
01:15:54 Publicando com func azure functionapp publish
01:16:30 Conferindo no portal do Azure (RG, Function App, Storage, App Insights)
01:18:16 Logs e atualização de CRON; corrigindo agendamento para 08:00
01:19:57 Deploy alternativo pelo VS Code (Deploy to Azure)
01:22:42 Limpando tudo com az group delete (alertas e boas práticas)
Notas Importantes
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)