Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A extensão Azure Functions para Visual Studio Code permite desenvolver funções localmente e implantá-las em Azure. Se essa experiência for sua primeira com Azure Functions, você poderá saber mais em An introdução ao Azure Functions.
A extensão Azure Functions fornece estes benefícios:
- Editar, criar e executar funções em seu computador de desenvolvimento local.
- Publique seu projeto de Azure Functions diretamente no Azure.
- Escreva suas funções em vários idiomas, aproveitando os benefícios de Visual Studio Code.
Você está exibindo a versão do C# deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.
Se você for novo no Functions, convém primeiro concluir o artigo de início rápido Visual Studio Code.
Você está exibindo a versão Java deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.
Se você for novo no Functions, convém primeiro concluir o artigo de início rápido Visual Studio Code.
Você está exibindo a versão do JavaScript deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.
Se você for novo no Functions, convém primeiro concluir o artigo de início rápido Visual Studio Code.
Você está exibindo a versão do PowerShell deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.
Se você for novo no Functions, convém primeiro concluir o artigo de início rápido Visual Studio Code.
Você está exibindo a versão Python deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.
Se você for novo no Functions, convém primeiro concluir o artigo de início rápido Visual Studio Code.
Você está exibindo a versão do TypeScript deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência no início do artigo.
Se você for novo no Functions, convém primeiro concluir o artigo de início rápido Visual Studio Code.
Importante
Não combine desenvolvimento local e desenvolvimento de portal para um único aplicativo de funções. Ao publicar a partir de um projeto local para um aplicativo de funções, o processo de implantação substitui quaisquer funções que você desenvolveu o portal.
Pré-requisitos
Visual Studio Code instalado em uma das plataformas suportadas.
Extensão do Azure Functions Você também pode instalar o pacote de extensão Azure Tools, que é recomendado para trabalhar com recursos de Azure.
Uma assinatura Azure ativa. Se você ainda não tiver uma conta, poderá criar uma com base na extensão em Visual Studio Code.
Você também precisa desses pré-requisitos para executar e depurar suas funções localmente. Eles não são obrigados a apenas criar ou publicar projetos para Azure Functions.
- O Azure Functions Core Tools, que permite uma experiência de depuração local integrada. Quando você tem a extensão Azure Functions instalada, a maneira mais fácil de instalar ou atualizar as Ferramentas Principais é executando o comando
Azure Functions: Install or Update Azure Functions Core Toolsna paleta de comandos.
A extensão C# para Visual Studio Code.
.NET (CLI), que está incluído no SDK do .NET.
Java, uma das versões suportadas.
-
Node.js, uma das versões compatíveis. Use o comando
node --versionpara verificar sua versão.
PowerShell 7.2 recomendado. Para obter informações sobre versão, confira versões do PowerShell.
A extensão PowerShell para Visual Studio Code.
Python, uma das versões suportadas.
Python extension para Visual Studio Code.
Criar um projeto de Azure Functions
A extensão do Functions permite criar o projeto de aplicativo de funções necessário ao mesmo tempo que você cria sua primeira função. Use estas etapas para criar uma função disparada por HTTP em um novo projeto. Um gatilho HTTP é o modelo de gatilho de função mais simples de demonstrar.
Em Visual Studio Code, pressione F1 para abrir a paleta de comandos. Pesquise e execute o comando
Azure Functions: Create New Project.... Selecione o local do diretório para o workspace do projeto e escolha Selecionar.Você pode criar uma nova pasta ou escolher uma pasta vazia para o workspace do projeto, mas não escolha uma pasta do projeto que já faz parte de um workspace.
Em vez disso, você pode executar o comando
Azure Functions: Create New Containerized Project...para também gerar um Dockerfile para o projeto.Quando solicitado, Selecione uma linguagem para seu projeto. Se necessário, escolha uma versão específica da linguagem.
Selecione o modelo de função de gatilho HTTP ou selecione Ignorar por enquanto para criar um projeto sem uma função. Você sempre poderá adicionar uma função ao projeto posteriormente.
Dica
Para exibir modelos adicionais, selecione a opção Alterar filtro de modelo e defina o valor como Core ou All.
Para o nome da função, insira HttpExample, selecione Enter e, em seguida, selecione Autorização de função .
Esse nível de autorização exige que você forneça uma chave de função ao chamar o ponto de extremidade da função.
Na lista suspensa, selecione Adicionar ao workspace.
Na janela Você confia nos autores dos arquivos desta pasta?, escolha Sim.
Visual Studio Code cria uma função no idioma escolhido e no modelo para uma função disparada por HTTP.
Arquivos de projeto gerados
O modelo do projeto cria um projeto na linguagem escolhida e instala as dependências necessárias. Para qualquer linguagem, o novo projeto tem estes arquivos:
host.json: Permite que você configure o host do Functions. Essas configurações se aplicam quando você executa funções localmente e quando as executa em Azure. Para obter mais informações, consulte a referência para host.json.
local.settings.json: mantém as configurações usadas ao executar as funções localmente. Essas configurações são usadas somente quando você está executando as funções localmente. Para obter mais informações, confira Arquivo de configurações local.
Importante
Como o arquivo local.settings.json pode conter segredos, certifique-se de excluir o arquivo do controle do código-fonte do seu projeto.
Dockerfile (opcional): permite criar um aplicativo de funções conteinerizado do seu projeto usando uma imagem base aprovada para seu projeto. Você só obtém esse arquivo quando executa o comando
Azure Functions: Create New Containerized Project.... Você pode adicionar um Dockerfile a um projeto existente usando ofunc init --docker-onlycomando em Ferramentas Principais.
Um arquivo de biblioteca de classes HttpExample.cs, cujo conteúdo varia dependendo se o projeto é executado em um processo de trabalho isolado ou em processo com o host do Functions.
Estes arquivos são criados:
Um arquivo pom.xml na pasta raiz que define os parâmetros de projeto e implantação, incluindo dependências de projeto e a versão Java. O pom.xml também contém informações sobre os recursos de Azure criados durante uma implantação.
Um arquivo Functions.java no caminho src que implementa a função.
Os arquivos gerados dependem do modelo de programação do Node.js escolhido para o Functions:
Uma pasta HttpExample é criada que contém:
- O arquivo de definição function.json
- Um arquivo run.ps1, que contém o código da função.
Os arquivos gerados dependem do modelo de programação Python escolhido para o Functions:
Neste ponto, você pode executar a função de gatilho HTTP localmente.
Adicionar uma função ao projeto
Você pode adicionar uma nova função a um projeto existente usando um dos modelos de gatilho predefinidos do Functions. Para adicionar um novo gatilho de função, selecione F1 para abrir a paleta de comandos e, em seguida, localize e execute o comando Azure Functions: Criar Função. Siga os prompts para escolher o tipo de gatilho e definir os atributos necessários do gatilho. Se o gatilho exigir uma chave de acesso ou uma cadeia de conexão para se conectar a um serviço, prepare esse item antes de criar o gatilho da função.
Essa ação adiciona um novo arquivo de biblioteca de classes C# (.cs) ao seu projeto.
Essa ação adiciona um novo arquivo Java (.java) ao seu projeto.
Os resultados dessa ação dependem da versão do modelo do Node.js.
Essa ação cria uma nova pasta no projeto. A pasta contém um novo arquivo function.json e o novo arquivo de código do PowerShell.
Os resultados dessa ação dependem da versão do modelo Python.
Conectar-se a serviços
Você pode conectar sua função a outros serviços Azure adicionando associações de entrada e saída. As associações conectam a função a outros serviços, sem a necessidade de gravar o código de conexão.
Por exemplo, a maneira como você define uma associação de saída que grava dados em uma fila de armazenamento depende do modelo de processo:
Se necessário, adicione uma referência ao pacote que dá suporte à sua extensão de associação.
Atualize o método de função para adicionar um atributo que define o parâmetro de associação, como
QueueOutputpara uma associação de saída de fila. Você pode usar um objetoMultiResponsepara retornar várias mensagens ou vários fluxos de saída.
Por exemplo, para adicionar uma associação de saída que grava dados em uma fila de armazenamento, atualize o método da função para incluir um parâmetro de associação definido pela anotação QueueOutput. O objeto OutputBinding<T> representa as mensagens gravadas em uma associação de saída quando a função é concluída.
Por exemplo, a maneira como você define a associação de saída que grava dados em uma fila de armazenamento depende da versão do modelo do Node.js:
Visual Studio Code permite adicionar associações ao arquivo function.json seguindo um conjunto conveniente de prompts.
Para adicionar uma associação, abra o pallet de comando (F1) e digite Azure Functions: adicionar associação... , escolha a função para a nova associação e siga os prompts, que variam dependendo do tipo de associação que está sendo adicionada à função.
A seguir são exibidos exemplos de prompts para a definição de uma nova associação de saída de armazenamento:
| Rápido | Valor | Descrição |
|---|---|---|
| Selecionar direção de associação | out |
A associação é uma associação de saída. |
| Selecionar associação com direção | Azure Queue Storage |
A associação é uma associação de fila Azure Storage. |
| O nome usado para identificar essa associação em seu código | msg |
Nome que identifica o parâmetro de associação referenciado em seu código. |
| A fila à qual a mensagem será enviada | outqueue |
O nome da fila na qual a associação escreve. Quando o queueName não existe, a associação o cria no primeiro uso. |
| Selecione a configuração a partir de "local.settings.json" | MyStorageConnection |
O nome de uma configuração de aplicativo que contém o connection string da conta de armazenamento. A configuração AzureWebJobsStorage contém a string de conexão da conta de armazenamento que você criou com o app de funções. |
Você também pode clicar com o botão direito do mouse (Ctrl+clique no macOS) diretamente no arquivo function.json em sua pasta de funções, selecionar Adicionar associação e seguir os mesmos prompts.
Neste exemplo, a associação a seguir é adicionada à matriz bindings em seu arquivo function.json:
{
"type": "queue",
"direction": "out",
"name": "msg",
"queueName": "outqueue",
"connection": "MyStorageConnection"
}
Por exemplo, a maneira como você define a associação de saída que grava dados em uma fila de armazenamento depende da versão do modelo Python:
O exemplo a seguir mostra a definição de função depois de adicionar uma Associação de saída do Armazenamento de Filas a uma função disparada por HTTP:
Como uma função disparada por HTTP também retorna uma resposta HTTP, a função retorna um objeto MultiResponse, que representa a saída de HTTP e da fila.
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{
Veja a seguir a definição do objeto MultiResponse que inclui a associação de saída:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
Este exemplo usa ASP.NET Core integration. Se você não estiver usando ASP.NET Core integração, precisará alterar HttpRequest para HttpRequestData e IActionResult para HttpResponseData.
As mensagens são enviadas para a fila quando a função é concluída. A maneira como você define a associação de saída depende do seu modelo de processo. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.
@FunctionName("HttpExample")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "msg", queueName = "outqueue",
connection = "AzureWebJobsStorage") OutputBinding<String> msg,
final ExecutionContext context) {
Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.
const { app, output } = require('@azure/functions');
const sendToQueue = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [sendToQueue],
handler: async (request, context) => {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
},
});
A maneira como você define a associação de saída depende da versão do modelo do Node.js. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.
@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
A maneira como você define a associação de saída depende da versão do modelo de Python. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.
import {
app,
output,
HttpRequest,
HttpResponseInit,
InvocationContext,
StorageQueueOutput,
} from '@azure/functions';
const sendToQueue: StorageQueueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
export async function HttpExample(
request: HttpRequest,
context: InvocationContext,
): Promise<HttpResponseInit> {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
}
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
handler: HttpExample,
});
A maneira como você define a associação de saída depende da versão do modelo do Node.js. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.
Entrar no Azure
Antes de criar Azure recursos ou publicar seu aplicativo, você deve entrar no Azure.
Se você ainda não estiver conectado, na barra Activity, selecione o ícone Azure. Em seguida, em Resources, selecione Entrar no Azure.
Se você já estiver conectado e puder ver suas assinaturas existentes, vá para a próxima seção. Se você ainda não tiver uma conta Azure, selecione Criar uma conta Azure. Os alunos podem selecionar Criar uma conta do Azure for Students.
Quando você for solicitado no navegador, selecione sua conta de Azure e entre usando suas credenciais de conta Azure. Se você criar uma conta, poderá se conectar depois que a conta for criada.
Após fazer login com sucesso, você poderá fechar a nova janela do navegador. As assinaturas que pertencem à sua conta Azure são exibidas na barra lateral.
Criar recursos de Azure
Antes de publicar seu projeto do Functions para Azure, você deve ter um aplicativo de funções e recursos relacionados em sua assinatura Azure para executar seu código. O aplicativo de funções fornece um contexto de execução para suas funções. Quando você publica do Visual Studio Code em um aplicativo de funções no Azure, o projeto é empacotado e implantado no aplicativo de funções selecionado em sua assinatura do Azure.
Ao criar um aplicativo de funções em Azure, você pode escolher um caminho de criação de aplicativo de funções rápida usando padrões ou um caminho que oferece opções avançadas, como usar recursos de Azure existentes. Dessa forma, você tem mais controle sobre a criação dos recursos remotos.
Nesta seção, você criará um aplicativo de funções no plano de Consumo Flex juntamente com os recursos relacionados em sua assinatura de Azure. Muitas das decisões de criação de recursos são tomadas para você com base em comportamentos padrão. Para obter mais controle sobre os recursos criados, você deve, em vez disso, criar seu aplicativo de funções com opções avançadas.
Em Visual Studio Code, selecione F1 para abrir a paleta de comandos. No prompt (
>), insira e selecione Azure Functions: Criar Aplicativo de Funções no Azure.Nos prompts, forneça as informações a seguir:
Rápido Ação Selecionar assinatura Selecione a assinatura Azure a ser usada. O prompt não aparece quando você tem apenas uma assinatura visível em Recursos. Insira um novo nome do aplicativo de funções Insira um nome global exclusivo válido em um caminho de URL. O nome inserido é validado para garantir que ele seja exclusivo em Azure Functions. Selecione uma localização para novos recursos Selecione uma região Azure. Para obter um melhor desempenho, escolha uma região perto de você. Somente as regiões compatíveis com os planos de Consumo Flex são exibidas. Selecionar uma pilha de runtime Selecione a versão da linguagem que você executa localmente no momento. Selecionar tipo de autenticação de recurso Selecione a identidade gerenciada, que é a opção mais segura para se conectar à conta de armazenamento de host padrão. No painel Azure: Log de Atividades, a extensão Azure mostra o status dos recursos individuais conforme eles são criados em Azure.
Quando o aplicativo de funções é criado, os seguintes recursos relacionados são criados em sua assinatura Azure. Os recursos são nomeados com base no nome que você inseriu para o seu aplicativo de funções.
- Um grupo de recursos, que é um contêiner lógico para recursos relacionados.
- Um aplicativo de funções, que fornece o ambiente para a execução do código de função. Um aplicativo de funções lhe permite agrupar funções como uma unidade lógica para facilitar o gerenciamento, a implantação e o compartilhamento de recursos dentro do mesmo plano de hospedagem.
- Um plano Azure App Service, que define o host subjacente para seu aplicativo de funções.
- Uma conta Azure Storage padrão, que é usada pelo host do Functions para manter o estado e outras informações sobre seu aplicativo de funções.
- Uma instância do Application Insights conectada ao aplicativo de funções que acompanha o uso das suas funções no aplicativo.
- Uma identidade gerenciada atribuída pelo usuário adicionada à função Colaborador de Dados de Blobs de Armazenamento na nova conta de armazenamento de host padrão.
Uma notificação é exibida depois que seu aplicativo de funções é criado e o pacote de implantação é aplicado.
Dica
Por padrão, os recursos de Azure exigidos pelo aplicativo de funções são criados com base no nome inserido para seu aplicativo de funções. Por padrão, os recursos são criados com o aplicativo de funções no mesmo novo grupo de recursos. Se você quiser personalizar os nomes dos recursos associados ou reutilizar os recursos existentes, publique o projeto com opções avançadas de criação.
Criar uma implantação de Azure Container Apps
Importante
Um novo método de hospedagem para executar Azure Functions diretamente no Azure Container Apps agora está disponível. Consulte Native Azure Functions Support in Azure Container Apps. Essa integração permite que você use todos os recursos e funcionalidades do Azure Container Apps. Você também se beneficia do modelo de programação de funções e da simplicidade do dimensionamento automático fornecido pelo Azure Functions.
Recomendamos essa abordagem para a maioria das novas cargas de trabalho. Para obter mais informações, consulte Azure Functions no Azure Container Apps.
Use Visual Studio Code para criar recursos Azure para um projeto de código em contêineres. Quando a extensão detecta a presença de um Dockerfile durante a criação de recursos, ela pergunta se você deseja implantar a imagem de contêiner em vez de apenas o código. Visual Studio Code cria um ambiente Azure Container Apps para seu projeto de código em contêineres integrado ao Azure Functions. Para obter mais informações, consulte hospedagem do Azure Functions em Azure Container Apps.
Observação
A implantação de contêiner requer a extensão Azure Container Apps para Visual Studio Code. Esta extensão está em versão prévia.
O processo de criação depende se você escolhe uma criação rápida ou se precisa usar opções avançadas:
Em Visual Studio Code, pressione F1 para abrir a paleta de comandos. Pesquise e execute o comando
Azure Functions: Create Function App in Azure....Quando solicitado, escolha a imagem do contêiner.
Forneça as seguintes informações nos prompts:
Rápido Seleção Selecionar assinatura (opcional) Escolha a assinatura a ser usada. Você não verá esse aviso quando tiver apenas uma assinatura visível em Recursos. Insira um nome para o novo aplicativo de funções Digite um nome válido em um caminho de URL. O nome que você digita é validado para garantir que ele seja globalmente exclusivo no Functions. Selecionar tipo de autenticação de recurso Selecione Configuração gerenciada para que seu aplicativo se conecte a recursos remotos usando Microsoft Entra ID autenticação em vez de usar segredos compartilhados (cadeias de conexão e chaves), que são menos seguros. Selecione uma localização para novos recursos Para obter um melhor desempenho, escolha uma região perto de você. Quando solicitado, insira um nome para o ambiente do aplicativo de contêiner.
A extensão mostra o status dos recursos individuais conforme eles estão sendo criados no Azure no painel Azure: Log de Atividades.
Para obter mais informações sobre os recursos necessários para executar suas funções conteinerizadas em Aplicativos de Contêiner, consulte Recursos necessários.
Observação
No momento, você não pode usar Visual Studio Code para implantar um aplicativo de funções em contêineres em um ambiente de Aplicativos de Contêiner integrado Azure Functions. Em vez disso, você deve publicar sua imagem de contêiner em um registro de contêiner e, em seguida, definir essa imagem de registro como a fonte de implantação do aplicativo de funções hospedado pelos Aplicativos de Contêiner. Para obter mais informações, consulte Criar seu aplicativo de funções em um contêiner e Atualizar uma imagem no registro.
Implantar arquivos de projeto
Configure a implantação continuosa para que o aplicativo de funções no Azure seja atualizado ao atualizar os arquivos de origem no local de origem conectado. Você também pode implantar seus arquivos de projeto a partir do Visual Studio Code. Ao publicar do Visual Studio Code, você pode aproveitar a tecnologia de implantação Zip.
Importante
A implantação em um aplicativo de funções existente sempre substitui o conteúdo desse aplicativo em Azure.
Na paleta de comandos, insira e selecione Azure Functions: Implantar no Aplicativo de Funções.
Selecione o aplicativo de funções que você acabou de criar. Quando solicitado sobre a substituição de implantações anteriores, selecione Implantar para implantar seu código de função no novo recurso do aplicativo de funções.
Quando a implantação for concluída, selecione View Output para exibir os resultados de criação e implantação, incluindo os recursos de Azure que você criou. Se você não viu a notificação, selecione o ícone do sino no canto inferior direito para vê-la novamente.
Obter a URL de uma função disparada por HTTP no Azure
Para chamar uma função disparada por HTTP de um cliente, você precisa da URL da função, que estará disponível após a implantação em seu aplicativo de funções. Essa URL inclui as chaves de função necessárias. Você pode usar a extensão para obter essas URLs para as funções implantadas. Se você quiser apenas executar a função remota em Azure, utilize a função Execute agora funcionalidade da extensão.
Selecione F1 para abrir a paleta de comandos e, em seguida, localize e execute o comando Azure Functions: Copiar URL da Função.
Siga os prompts para selecionar seu aplicativo de funções no Azure e, em seguida, o gatilho HTTP específico que você deseja invocar.
A URL da função é copiada na área de transferência, juntamente com as chaves necessárias que passaram pelo parâmetro de consulta code. Use uma ferramenta HTTP para enviar solicitações POST ou um navegador para enviar solicitações GET para a função remota.
Quando a extensão obtém a URL de uma função em Azure, ela usa sua conta Azure para recuperar automaticamente as chaves necessárias para iniciar a função. Saiba mais sobre as chaves de acesso da função. Iniciar funções que não foram disparadas por HTTP requer o uso da chave de administração.
Executar funções
A extensão Azure Functions permite executar funções individuais. Você pode executar funções em seu projeto no computador de desenvolvimento local ou em sua assinatura de Azure.
Para funções de gatilho HTTP, a extensão chama o ponto de extremidade HTTP. Para outros tipos de gatilhos, a extensão chama as APIs de administrador para iniciar a função. O corpo da mensagem da solicitação enviada para a função depende do tipo de gatilho. Quando um gatilho exige dados de teste, você é solicitado a inserir dados em um formato JSON específico.
Executar funções no Azure
Para executar uma função no Azure de Visual Studio Code, siga estas etapas:
Na paleta de comandos, insira Azure Functions: execute a função agora e selecione sua assinatura Azure.
Na lista, escolha seu aplicativo de funções em Azure. Se você não estiver vendo o aplicativo de funções, verifique se está conectado à assinatura correta.
Na lista, escolha a função que você deseja executar. Em Inserir corpo da solicitação, digite o corpo da mensagem da solicitação e pressione Enter para enviar essa mensagem de solicitação para sua função.
O texto padrão em Inserir corpo da solicitação indica o formato do corpo. Se o aplicativo de funções não tiver funções, um erro de notificação será mostrado com esse erro.
Quando a função é executada no Azure e retorna uma resposta, Visual Studio Code mostra uma notificação.
Você também pode executar sua função na área Azure: Functions abrindo o menu de atalho para a função que deseja executar em seu aplicativo de funções em sua assinatura Azure e selecionando Execute Function Now... .
Quando você executa suas funções em Azure de Visual Studio Code, a extensão usa sua conta Azure para recuperar automaticamente as chaves necessárias para iniciar a função. Saiba mais sobre as chaves de acesso da função. Iniciar funções que não foram disparadas por HTTP requer o uso da chave de administração.
Executar funções localmente
O runtime local é o mesmo runtime que hospeda seu aplicativo de funções em Azure. O runtime lê as configurações locais do arquivolocal.settings.json. Para executar o projeto do Functions localmente, você deve atender a mais requisitos.
Configurar o projeto para ser executado localmente
O runtime do Functions usa uma conta Azure Storage internamente para todos os tipos de gatilho, exceto HTTP e webhooks. Defina a chave Values.AzureWebJobsStorage para uma cadeia de conexão válida da conta do Azure Storage.
Esta seção usa a extensão Azure Storage para Visual Studio Code com Azure Storage Explorer para se conectar e recuperar a cadeia de conexão de armazenamento.
Para definir a string de conexão da conta de armazenamento:
Em Visual Studio, abra Cloud Explorer expanda Storage Account>Your Storage Account e selecione Properties e copie o valor Primary Connection String.
Em seu projeto, abra o arquivo local.settings.json e defina o valor da chave AzureWebJobsStorage para o connection string copiado.
Repita a etapa anterior para adicionar as chaves exclusivas para a matriz de Valores para todas as outras conexões necessárias para as suas funções.
Para obter mais informações, confira Arquivo de configurações local.
Depurar funções localmente
Para depurar as funções, selecione F5. Caso as Core Tools não estejam disponíveis, será solicitada a instalação. Quando o Core Tools está instalado e em execução, a saída é mostrada no Terminal. Essa etapa é a mesma da execução do comando do func start Core Tools no Terminal, mas com tarefas de compilação adicionais e um depurador anexado.
Quando o projeto estiver em execução, você poderá usar o recurso Execute Agora... da extensão para disparar suas funções como faria quando o projeto é implantado no Azure. Com o projeto em execução no modo de depuração, os pontos de interrupção são atingidos em Visual Studio Code como você esperaria.
Na paleta de comandos, insira Azure Functions: Execute a função agora e escolha Projetolocal.
Escolha a função que você deseja executar no projeto e digite o corpo da mensagem da solicitação em Inserir corpo da solicitação. Clique em ENTER para enviar essa mensagem de solicitação à função. O texto padrão no Inserir corpo da solicitação deve indicar o formato do corpo. Se o aplicativo de funções não tiver funções, um erro de notificação será mostrado com esse erro.
Quando a função é executada localmente e depois que a resposta é recebida, uma notificação é gerada em Visual Studio Code. As informações sobre a execução da função são mostradas no painel Terminal.
As chaves não são necessárias ao executar localmente. Essa regra se aplica a chaves de função e chaves no nível do administrador.
Trabalhar com configurações de aplicativo localmente
Quando o aplicativo de funções é executado no Azure, as configurações exigidas por suas funções são armazenadas criptografadas nas configurações do aplicativo. Durante o desenvolvimento local, essas configurações são adicionadas à Values coleção no arquivo local.settings.json. O arquivo local.settings.json também armazena as configurações usadas pelas ferramentas de desenvolvimento locais.
Os itens na coleção Values no arquivo local.settings.json do projeto destinam-se a espelhar itens nas configurações do aplicativo de funções no Azure.
Por padrão, essas configurações não são migradas automaticamente quando você publica o projeto para Azure. Após a conclusão da publicação, você pode optar por publicar configurações de local.settings.json para seu aplicativo de funções no Azure. Para saber mais, confira Publicar configurações de aplicativo.
Os valores em ConnectionStrings nunca são publicados.
Seu código pode ler os valores de configurações do aplicativo de função como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
- Seu código pode ler os valores de configurações do aplicativo de funções como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
- Seu código pode ler os valores de configurações do aplicativo de funções como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
- Seu código pode ler os valores de configurações do aplicativo de funções como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
- Seu código pode ler os valores de configurações do aplicativo de funções como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
Configurações de aplicativo no Azure
As configurações no arquivo local.settings.json em seu projeto devem corresponder às configurações do aplicativo de funções no Azure. Você deve adicionar novas configurações ao local.settings.json e ao aplicativo de funções no Azure. Essas configurações não são carregadas automaticamente quando você publica o projeto. Da mesma forma, você deve baixar as configurações que criar no aplicativo de funções no portal para seu projeto local.
Publicar configuração de aplicativo
A maneira mais fácil de publicar as configurações necessárias no aplicativo de funções no Azure é usar o link Upload que aparece depois de publicar seu projeto:
Você também pode publicar configurações usando o comando Azure Functions: Carregar Configuração Local na paleta de comandos. Você pode adicionar configurações individuais às configurações do aplicativo em Azure usando o comando Azure Functions: Adicionar Nova Configuração.
Dica
Salve o arquivo local.settings.json antes de publicá-lo.
Se o arquivo local for criptografado, o processo o descriptografa, publica e criptografa novamente. Se houver valores conflitantes nos dois locais, você será solicitado a escolher como proceder.
Exiba as configurações de aplicativo existentes na área Azure: Functions expandindo sua assinatura, seu aplicativo de funções e Application Settings.
Baixar configurações de Azure
Se você criar configurações de aplicativo no Azure, poderá baixá-las no arquivo local.settings.json usando o comando Azure Functions: Baixar Configurações Remotas.
Assim como no carregamento, se o arquivo local for criptografado, o processo o descriptografa, atualiza-o e criptografa-o novamente. Se houver valores conflitantes nos dois locais, você será solicitado a escolher como proceder.
Instalar extensões de associação
Com exceção dos gatilhos de timer e HTTP, as associações são implementadas nos pacotes de extensão.
Instale explicitamente os pacotes de extensão para os gatilhos e as associações que precisam deles. O pacote específico que você instala depende do modelo de processo do projeto.
Execute o comando dotnet add package na janela Terminal para instalar os pacotes de extensão necessários para o projeto. Esse modelo demonstra como adicionar uma associação para uma biblioteca de classes em processo isolado:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.<BINDING_TYPE_NAME> --version <TARGET_VERSION>
Substitua <BINDING_TYPE_NAME> pelo nome do pacote que contém a associação de que você precisa. Você pode encontrar o artigo de referência de associação desejada na lista de vinculações com suporte.
Substituir <TARGET_VERSION> no exemplo com uma versão específica do pacote, como 3.0.0-beta5. As versões válidas são listadas nas páginas de pacote individuais NuGet.org. As versões principais que correspondem ao Runtime do Functions atual são especificadas no artigo de referência para a associação.
Dica
Você também pode usar os comandos DO NuGet no Kit de Desenvolvimento do C# para instalar pacotes de extensão de associação.
O script em C# usa pacotes de extensão.
A maneira mais fácil de instalar as extensões de associação é habilitar pacotes de extensão. Quando você habilita os pacotes, um conjunto predefinido de pacotes de extensão é instalado automaticamente.
Para habilitar pacotes de extensão, abra o arquivo host.json e atualize seu conteúdo de acordo com o código a seguir:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
}
}
Se, por algum motivo, você não puder usar um pacote de extensão para instalar extensões de associação para seu projeto, consulte Instalar extensões explicitamente.
Funções de monitoramento
Quando você executa funções localmente, o Core Tools transmite dados de log para o console do Terminal. Você também pode obter dados de log quando seu projeto do Functions é executado em um aplicativo de funções em Azure. Você pode se conectar aos logs de streaming no Azure para ver dados de log quase em tempo real. Você deve habilitar o Application Insights para uma compreensão mais completa de como seu aplicativo de funções se comporta.
Logs de streaming
Ao desenvolver um aplicativo, geralmente é útil visualizar as informações do registro em log quase em tempo real. Você pode exibir um fluxo de arquivos de log gerados por suas funções. Ative os logs do pallet de comando com o comando Azure Functions: Start streaming logs. Essa saída é um exemplo dos logs de streaming de uma solicitação para uma função disparada por HTTP:
Para saber mais, confira Logs de streaming.
Application Insights
Monitore a execução das funções integrando o aplicativo de funções com o Application Insights. Quando você cria um aplicativo de funções no portal Azure, essa integração ocorre por padrão. Ao criar seu aplicativo de funções durante a publicação no Visual Studio, você precisa integrar o Application Insights por conta própria. Para saber como, confira Habilitar a integração do Application Insights.
Para saber mais sobre como monitorar usando o Application Insights, consulte Monitor Azure Functions.
Projetos do C# de script
Por padrão, todos os projetos do C# são criados como projetos de biblioteca de classes compilados do C#. Se preferir trabalhar com projetos de script C#, selecione o script C# como o idioma padrão nas configurações de extensão Azure Functions:
Selecione Arquivo>Preferências>Configurações.
Vá para User Settings>Extensions>Azure Functions.
Selecione C#Script na função Azure: Linguagem do Projeto.
Depois de concluir essas etapas, as chamadas feitas para o Core Tools subjacente incluem a opção --csx, que gera e publica arquivos de projeto com o script do C# (.csx). Ao especificar esse idioma padrão, todos os projetos que você criar serão, por padrão, projetos de script em C#. Você não será solicitado a escolher uma linguagem de projeto quando um padrão for definido. Para criar projetos em outras linguagens, você deve alterar essa configuração ou removê-la do arquivo settings.json do usuário. Depois de remover essa configuração, você será solicitado novamente a escolher a linguagem quando criar um projeto.
Referência da paleta de comandos
A extensão Azure Functions fornece uma interface gráfica útil para interagir com seus aplicativos de funções no Azure. A mesma funcionalidade também está disponível como comandos na paleta de comandos (F1). Estes comandos Azure Functions estão disponíveis:
| comando Azure Functions | Descrição |
|---|---|
| Adicionar novas configurações | Cria uma nova configuração de aplicativo em Azure. Para saber mais, confira Publicar configurações de aplicativo. Talvez você também precise baixar essa configuração nas configurações locais. |
| Configurar fonte de implantação | Conecta seu aplicativo de funções em Azure a um repositório Git local. Para saber mais, confira Implantação contínua para Azure Functions. |
| Conectar ao Repositório do GitHub | Conecta seu aplicativo de funções a um repositório GitHub. |
| Copiar URL da função | Obtém a URL remota de uma função disparada por HTTP que está em execução no Azure. Para saber mais, confira Obter a URL da função implantada. |
| Criar aplicativo de funções no Azure | Cria um novo aplicativo de funções em sua assinatura em Azure. Para saber mais, consulte a seção sobre como publicar em um novo aplicativo de função no Azure. |
| Descriptografar configurações | Descriptografa as configurações locais que o comando Azure Functions: Criptografar Configurações criptografou. |
| Excluir aplicativo de funções | Remove um aplicativo de funções de sua assinatura em Azure. Quando não há outros aplicativos no plano do Serviço de Aplicativo, você recebe a opção de excluir esse plano também. Outros recursos, como contas de armazenamento e grupos de recursos, não são excluídos. Para remover todos os recursos, você deve excluir o grupo de recursos. O projeto local não é afetado. |
| Excluir função | Remove uma função existente de um aplicativo de funções em Azure. Como essa exclusão não afeta o projeto local, remova a função localmente e, em seguida, republique o projeto. |
| Excluir proxy | Remove um proxy do Azure Functions do aplicativo de funções no Azure. Para saber mais sobre proxies, consulte Work with Azure Functions Proxies. |
| Excluir configuração | Exclui uma configuração de aplicativo de funções no Azure. Essa exclusão não afeta as configurações no arquivo local.settings.json. |
| Desconecte-se do repositório | Remove a conexão de implantação continuosa entre um aplicativo de funções no Azure e um repositório de controle do código-fonte. |
| Baixar configurações remotas | Baixa as configurações do aplicativo de funções escolhido em Azure no arquivo local.settings.json. Se o arquivo local for criptografado, ele será descriptografado, atualizado e criptografado novamente. Se houver configurações com valores conflitantes nos dois locais, você será solicitado a escolher como proceder. Salve as alterações no arquivo local.settings.json antes de executar esse comando. |
| Editar configurações | Altera o valor de uma configuração de aplicativo de funções existente no Azure. Esse comando não afeta as configurações no arquivo local.settings.json. |
| Criptografar configurações | Criptografa itens individuais na matriz Values nas configurações locais. Nesse arquivo, IsEncrypted também é definido como true, que especifica que o runtime local descriptografa as configurações antes de usá-las. Criptografe as configurações locais para reduzir o risco de vazar informações valiosas. Em Azure, as configurações do aplicativo são sempre armazenadas criptografadas. |
| Executar função agora | Inicia manualmente uma função usando APIs de administrador. Use este comando para teste, localmente durante a depuração e contra funções em execução no Azure. Quando uma função em Azure é iniciada, a extensão primeiro obtém automaticamente uma chave de administrador, que ela usa para chamar as APIs de administrador remoto que iniciam funções no Azure. O corpo da mensagem enviada para a API depende do tipo de gatilho. Os gatilhos de temporizador não exigem que você transmita dados. |
| Inicializar projeto para uso com o VS Code | Adiciona os arquivos de projeto Visual Studio Code necessários a um projeto do Functions existente. Use esse comando para trabalhar com um projeto criado com o Core Tools. |
| Instalar ou atualizar ferramentas principais do Azure Functions | Instala ou atualiza Azure Functions Core Tools, que é usado para executar funções localmente. |
| Reimplantar | Permite reimplantar arquivos de projeto de um repositório Git conectado para uma implantação específica no Azure. Para republicar as atualizações locais de Visual Studio Code, republique seu projeto. |
| Renomear configurações | Altera o nome da chave de uma configuração de aplicativo de funções existente no Azure. Esse comando não afeta as configurações no arquivo local.settings.json. Depois de renomear as configurações no Azure, você deverá carregá-las no projeto local. |
| Reinicializar | Reinicia o aplicativo de funções em Azure. A implantação de atualizações também reinicia o aplicativo de funções. |
| Definir AzureWebJobsStorage | Define o valore da configuração de aplicativo AzureWebJobsStorage. Essa configuração é exigida por Azure Functions. Ele é definido quando um aplicativo de funções é criado em Azure. |
| Iniciar | Inicia um aplicativo de função parado no Azure. |
| Iniciar Logs de Streaming | Inicia os logs de streaming do aplicativo de funções no Azure. Use logs de streaming durante a solução de problemas remota no Azure se precisar ver informações de registro em log quase em tempo real. Para saber mais, confira Logs de streaming. |
| Parar | Interrompe um aplicativo de funções em execução no Azure. |
| Interromper logs de streaming | Interrompe os logs de streaming do aplicativo de funções no Azure. |
| Alternar como configuração de slot | Quando habilitado, garante que uma configuração de aplicativo persista para determinado slot de implantação. |
| Uninstall Azure Functions Core Tools | Remove o Azure Functions Core Tools, exigido pela extensão. |
| Carregar configurações locais | Carrega as configurações do arquivo local.settings.json para o aplicativo de funções escolhido no Azure. Se o arquivo local for criptografado, ele será descriptografado, carregado e criptografado novamente. Se houver configurações com valores conflitantes nos dois locais, você será solicitado a escolher como proceder. Salve as alterações no arquivo local.settings.json antes de executar esse comando. |
| Visualizar Commit no GitHub | Mostra a confirmação mais recente em uma implantação específica, quando o aplicativo de funções está conectado a um repositório. |
| Exibir logs de implantação | Mostra os logs de uma implantação específica no aplicativo de funções no Azure. |
Próximas etapas
Para saber mais sobre Azure Functions Core Tools, consulte Work with Azure Functions Core Tools.
Para saber mais sobre como desenvolver funções como bibliotecas de classes .NET, consulte Azure Functions referência de desenvolvedor C#. Este artigo também fornece links para exemplos de como usar atributos para declarar os vários tipos de associações compatíveis com Azure Functions.