Guia de início rápido: criar uma função C# no Azure a partir da linha de comando
Neste artigo, você usa ferramentas de linha de comando para criar uma função C# que responde a solicitações HTTP. Depois de testar o código localmente, vai implementá-lo no ambiente sem servidor das Funções do Azure.
Este artigo cria uma função acionada por HTTP que é executada no .NET 8 em um processo de trabalho isolado. Para obter informações sobre as versões do .NET suportadas para funções C#, consulte Versões suportadas. Há também uma versão baseada em código do Visual Studio deste artigo.
A conclusão deste início rápido incorre num pequeno custo de alguns cêntimos USD ou menos na sua conta do Azure.
Configure seu ambiente local
Antes de começar, você deve ter o seguinte:
SDK do .NET 8.0.
Uma das seguintes ferramentas para criar recursos do Azure:
Azure CLI versão 2.4 ou posterior.
O módulo Azure Az PowerShell versão 5.9.0 ou posterior.
Você também precisa de uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Instalar as Ferramentas de Núcleo de Funções do Azure
A maneira recomendada de instalar o Core Tools depende do sistema operacional do seu computador de desenvolvimento local.
As etapas a seguir usam um instalador do Windows (MSI) para instalar o Core Tools v4.x. Para obter mais informações sobre outros instaladores baseados em pacotes, consulte o Leiame das Ferramentas Principais.
Transfira e execute o instalador das Ferramentas Principais, com base na sua versão do Windows:
- v4.x - Windows de 64 bits (Recomendado. A depuração de código do Visual Studio requer 64 bits.)
- v4.x - Windows de 32 bits
Se você usou anteriormente o instalador do Windows (MSI) para instalar o Core Tools no Windows, você deve desinstalar a versão antiga de Adicionar remover programas antes de instalar a versão mais recente.
Criar um projeto de função local
No Azure Functions, um projeto de função é um contêiner para uma ou mais funções individuais que respondem a um gatilho específico. Todas as funções em um projeto compartilham as mesmas configurações locais e de hospedagem. Nesta seção, você cria um projeto de função que contém uma única função.
Execute o
func init
comando, da seguinte forma, para criar um projeto de funções em uma pasta chamada LocalFunctionProj com o tempo de execução especificado:func init LocalFunctionProj --worker-runtime dotnet-isolated --target-framework net8.0
Navegue até a pasta do projeto:
cd LocalFunctionProj
Esta pasta contém vários arquivos para o projeto, incluindo arquivos de configuração chamados local.settings.json e host.json. Como local.settings.json pode conter segredos baixados do Azure, o arquivo é excluído do controle do código-fonte por padrão no arquivo .gitignore .
Adicione uma função ao seu projeto usando o seguinte comando, onde o
--name
argumento é o nome exclusivo da sua função (HttpExample) e o--template
argumento especifica o gatilho da função (HTTP).func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
func new
Cria um arquivo de código HttpExample.cs.
(Opcional) Examinar o conteúdo do arquivo
Se desejar, você pode pular para Executar a função localmente e examinar o conteúdo do arquivo mais tarde.
HttpExample.cs
HttpExample.cs contém um Run
método que recebe dados de req
solicitação na variável como um objeto HttpRequest. Esse parâmetro é decorado com o HttpTriggerAttribute, para definir o comportamento do gatilho.
using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Company.Function
{
public class HttpExample
{
private readonly ILogger<HttpExample> _logger;
public HttpExample(ILogger<HttpExample> logger)
{
_logger = logger;
}
[Function("HttpExample")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.AuthLevelValue, "get", "post")] HttpRequest req)
{
_logger.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult("Welcome to Azure Functions!");
}
}
}
O objeto return é um objeto IActionResult que contém os dados que são devolvidos à resposta HTTP.
Para saber mais, consulte Gatilhos e associações HTTP do Azure Functions.
Executar a função localmente
Execute sua função iniciando o host de tempo de execução local do Azure Functions a partir da pasta LocalFunctionProj :
func start
No final da saída, as seguintes linhas devem aparecer:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...
Nota
Se HttpExample não aparecer como mostrado acima, você provavelmente iniciou o host de fora da pasta raiz do projeto. Nesse caso, use Ctrl+C para parar o host, navegue até a pasta raiz do projeto e execute o comando anterior novamente.
Copie a URL da sua
HttpExample
função dessa saída para um navegador e navegue até a URL da função e você deve receber uma mensagem Bem-vindo ao Azure Functions .Quando terminar, use Ctrl+C e escolha
y
parar o host de funções.
Criar recursos de suporte do Azure para sua função
Antes de implantar seu código de função no Azure, você precisa criar três recursos:
- Um grupo de recursos, que é um contêiner lógico para recursos relacionados.
- Uma conta de armazenamento, que é usada para manter o estado e outras informações sobre suas funções.
- Um aplicativo de função, que fornece o ambiente para executar seu código de função. Um aplicativo de função mapeia para seu projeto de função local e permite agrupar funções como uma unidade lógica para facilitar o gerenciamento, a implantação e o compartilhamento de recursos.
Use os comandos a seguir para criar esses itens. A CLI do Azure e o PowerShell são suportados.
Se ainda não o fez, inicie sessão no Azure:
az login
O comando az login conecta você à sua conta do Azure.
Crie um grupo de recursos nomeado
AzureFunctionsQuickstart-rg
na região escolhida:az group create --name AzureFunctionsQuickstart-rg --location <REGION>
O comando az group create cria um grupo de recursos. No comando acima, substitua
<REGION>
por uma região perto de você, usando um código de região disponível retornado do comando az account list-locations .Crie uma conta de armazenamento de uso geral em seu grupo de recursos e região:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false
O comando az storage account create cria a conta de armazenamento.
No exemplo anterior, substitua
<STORAGE_NAME>
por um nome apropriado para você e exclusivo no Armazenamento do Azure. Os nomes devem conter de três a 24 caracteres, números e letras minúsculas apenas.Standard_LRS
especifica uma conta de uso geral, que é suportada pelo Functions.
Importante
A conta de armazenamento é usada para armazenar dados importantes do aplicativo, às vezes incluindo o próprio código do aplicativo. Você deve limitar o acesso de outros aplicativos e usuários à conta de armazenamento.
Crie o aplicativo de função no Azure:
az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime dotnet-isolated --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>
O comando az functionapp create cria o aplicativo de função no Azure.
No exemplo anterior, substitua
<STORAGE_NAME>
pelo nome da conta usada na etapa anterior e substitua<APP_NAME>
por um nome globalmente exclusivo apropriado para você. O<APP_NAME>
também é o domínio DNS predefinido para a aplicação de funções.Este comando cria um aplicativo de função em execução em seu tempo de execução de idioma especificado no Plano de Consumo do Azure Functions, que é gratuito para a quantidade de uso que você incorre aqui. O comando também cria uma instância associada do Azure Application Insights no mesmo grupo de recursos, com a qual você pode monitorar seu aplicativo de função e exibir logs. Para obter mais informações, consulte Monitorar o Azure Functions. A instância não incorre em custos até que você a ative.
Implantar o projeto de função no Azure
Depois de criar com êxito seu aplicativo de função no Azure, você está pronto para implantar seu projeto de funções locais usando o func azure functionapp publish
comando.
Na pasta raiz do projeto, execute este func azure functionapp publish
comando:
func azure functionapp publish <APP_NAME>
Neste exemplo, substitua <APP_NAME>
pelo nome do seu aplicativo. Uma implantação bem-sucedida mostra resultados semelhantes à seguinte saída (truncada para simplificar):
... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample
Invoque a função no Azure
Como sua função usa um gatilho HTTP e suporta solicitações GET, você a invoca fazendo uma solicitação HTTP para sua URL. É mais fácil fazer isso em um navegador.
Copie o URL Invoke completo mostrado na saída do comando publish em uma barra de endereço do navegador. Quando você navega para esse URL, o navegador deve exibir uma saída semelhante à de quando você executou a função localmente.
Execute o seguinte comando para visualizar logs de streaming quase em tempo real:
func azure functionapp logstream <APP_NAME>
Em uma janela de terminal separada ou no navegador, chame a função remota novamente. Um log detalhado da execução da função no Azure é mostrado no terminal.
Clean up resources (Limpar recursos)
Se você continuar para a próxima etapa e adicionar uma vinculação de saída de fila do Armazenamento do Azure, mantenha todos os seus recursos no lugar, pois você aproveitará o que já fez.
Caso contrário, use o comando a seguir para excluir o grupo de recursos e todos os recursos contidos para evitar incorrer em custos adicionais.
az group delete --name AzureFunctionsQuickstart-rg