Partilhar via


Desenvolva Azure Functions usando o Visual Studio Code

A extensão Azure Functions para Visual Studio Code permite-lhe desenvolver funções localmente e implementá-las em Azure. Se esta é a tua primeira experiência com Azure Functions, podes aprender mais em Uma introdução à Azure Functions.

A extensão Azure Functions oferece os seguintes benefícios:

  • Edite, crie e execute funções no seu computador de desenvolvimento local.
  • Publique o seu projeto Azure Functions diretamente no Azure.
  • Escreva as suas funções em várias linguagens enquanto aproveita os benefícios do Visual Studio Code.

Você está visualizando a versão em C# deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida no início do artigo.

Se és novo em Funções, talvez queiras primeiro completar o artigo de início rápido Visual Studio Code.

Está a ver a versão em Java deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida no início do artigo.

Se és novo em Funções, talvez queiras primeiro completar o artigo de início rápido Visual Studio Code.

Você está visualizando a versão JavaScript deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida no início do artigo.

Se és novo em Funções, talvez queiras primeiro completar o artigo de início rápido Visual Studio Code.

Você está exibindo a versão PowerShell deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida no início do artigo.

Se és novo em Funções, talvez queiras primeiro completar o artigo de início rápido Visual Studio Code.

Está a ver a versão em Python deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida no início do artigo.

Se és novo em Funções, talvez queiras primeiro completar o artigo de início rápido Visual Studio Code.

Você está visualizando a versão TypeScript deste artigo. Certifique-se de selecionar sua linguagem de programação Functions preferida no início do artigo.

Se és novo em Funções, talvez queiras primeiro completar o artigo de início rápido Visual Studio Code.

Importante

Não misture desenvolvimento local e desenvolvimento de portal para um único aplicativo de função. Quando você publica de um projeto local em um aplicativo de função, o processo de implantação substitui todas as funções que você desenvolveu no portal.

Pré-requisitos

  • Visual Studio Code instalado numa das plataformas suportadas .

  • Extensão do Azure Functions. Também pode instalar o pacote de extensões Azure Tools, que é recomendado para trabalhar com Azure recursos.

  • Uma subscrição ativa Azure. Se ainda não tens conta, podes criar uma a partir da extensão no 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 criar ou publicar projetos apenas no Azure Functions.

  • O Azure Functions Core Tools, que permite uma experiência integrada de depuração local. Quando tem a extensão Azure Functions instalada, a forma mais fácil de instalar ou atualizar o Core Tools é executar o comando Azure Functions: Install or Update Azure Functions Core Tools a partir da paleta de comandos.
  • A extensão C# para Visual Studio Code.

  • .NET (CLI), que está incluído no SDK .NET.

  • Node.js, uma das versões suportadas. Use o node --version comando para verificar sua versão.

Criar um projeto Azure Functions

A extensão Functions permite que você crie o projeto de aplicativo de função necessário ao mesmo tempo em que cria sua primeira função. Use estas etapas para criar uma função acionada por HTTP em um novo projeto. Um gatilho de função HTTP é o modelo de gatilho mais simples de demonstrar.

  1. Em Visual Studio Code, pressione F1 para abrir a paleta de comandos. Procura e executa o comando Azure Functions: Create New Project.... Selecione a localização do diretório para o seu espaço de trabalho de projeto e depois escolha Selecionar.

    Você pode criar uma nova pasta ou escolher uma pasta vazia para o espaço de trabalho do projeto, mas não escolha uma pasta de projeto que já faça parte de um espaço de trabalho.

    Pode, em vez disso, executar o comando Azure Functions: Create New Containerized Project... para também gerar um Dockerfile para o projeto.

  2. Quando solicitado, selecione um idioma para o seu projeto. Se necessário, escolha uma versão linguística específica.

  3. Selecione o modelo de função HTTP trigger , ou selecione Skip por agora para criar um projeto sem função. Você sempre pode adicionar uma função ao seu projeto mais tarde.

    Gorjeta

    Para visualizar modelos adicionais, selecione a opção de filtro Alterar modelo e defina o valor para Núcleo ou Todos.

  4. Para o nome da função, introduza HttpExample, selecione Enter e depois selecione a autorização de privilégios de função.

    Esse nível de autorização requer que forneça uma chave de função quando chamar o endpoint da função.

  5. Na lista suspensa, selecione Adicionar ao espaço de trabalho.

  6. Na janela Você confia nos autores dos arquivos nesta pasta?, selecione Sim.

O Visual Studio Code cria uma função na linguagem escolhida e no modelo para uma função ativada por HTTP.

Arquivos de projeto gerados

O modelo de projeto cria um projeto no idioma escolhido e instala as dependências necessárias. Para qualquer idioma, o novo projeto tem estes arquivos:

  • host.json: Permite configurar o host Functions. Estas definições aplicam-se quando estás a executar funções localmente e quando as estás a executar no Azure. Para obter mais informações, consulte host.json referência.

  • local.settings.json: Mantém as configurações usadas quando você executa funções localmente. Essas configurações são usadas somente quando você está executando funções localmente. Para obter mais informações, consulte Arquivo de configurações locais.

    Importante

    Como o arquivo local.settings.json pode conter segredos, certifique-se de excluir o arquivo do controle do código-fonte do projeto.

  • Dockerfile (opcional): Permite criar um aplicativo de função em contêiner a partir do seu projeto usando uma imagem base aprovada para o seu projeto. Só recebes este ficheiro quando executas o comando Azure Functions: Create New Containerized Project.... Pode adicionar um Dockerfile a um projeto existente usando o func init --docker-only comando nas Ferramentas Core.

Um arquivo de biblioteca de classes HttpExample.cs, cujo conteúdo varia dependendo se seu projeto é executado em um processo de trabalho isolado ou em processo com o host Functions.

Estes ficheiros são criados:

  • Um ficheiro pom.xml na pasta raiz que define os parâmetros do projeto e de implementação, incluindo dependências do projeto e a versão Java. O pom.xml também contém informações sobre os recursos Azure criados durante uma implementação.

  • Um arquivo Functions.java no caminho src que implementa a função.

Os arquivos gerados dependem do modelo de programação Node.js escolhido para Funções:

  • Um arquivo package.json na pasta raiz.

  • Um arquivo .js nomeado na pasta src\functions , que contém a definição da função e o código da função.

É criada uma pasta HttpExample que contém:

Os ficheiros gerados dependem do modelo de programação Python escolhido para Funções:

  • Um arquivo de requirements.txt no nível do projeto que lista os pacotes exigidos pelo Functions.

  • Um arquivo function_app.py que contém a definição de função e o código.

Neste ponto, podes executar a tua função de trigger HTTP localmente.

Adicionar uma função ao seu projeto

Pode adicionar uma nova função a um projeto existente usando um dos templates de trigger Functions pré-definidos. Para adicionar um novo trigger de função, selecione F1 para abrir a paleta de comandos, depois encontre e execute o comando Azure Functions: Criar função. Siga as instruções para escolher o tipo de gatilho e definir os atributos necessários do gatilho. Se o seu gatilho requer uma chave de acesso ou uma cadeia de conexão para se ligar a um serviço, tenha esse item pronto antes de criar o gatilho da função.

Esta ação adiciona um novo arquivo de biblioteca de classes (.cs) C# ao seu projeto.

Esta ação adiciona um novo ficheiro Java (.java) ao seu projeto.

Os resultados desta ação dependem da versão do modelo Node.js.

  • Um arquivo package.json na pasta raiz.

  • Um arquivo .js nomeado na pasta src\functions , que contém a definição da função e o código da função.

Esta ação cria uma nova pasta no projeto. A pasta contém um novo arquivo de function.json e o novo arquivo de código do PowerShell.

Os resultados desta ação dependem da versão do modelo Python.

Visual Studio Code adiciona novo código de função, seja ao ficheiro function_app.py (comportamento padrão) ou a outro ficheiro Python que selecionaste.

Ligar aos serviços

Pode ligar a sua função a outros serviços do Azure adicionando ligações de entrada e saída. As vinculações conectam a sua função a outros serviços sem necessidade de escrever 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 seu modelo de processo:

  1. Se necessário, adicione uma referência ao pacote que suporta sua extensão de vinculação.

  2. Atualize o método de função para adicionar um atributo que define o parâmetro de vinculação, como QueueOutput para uma ligação de saída de fila. Você pode usar um MultiResponse objeto para retornar várias mensagens ou vários fluxos de saída.

Por exemplo, para adicionar uma ligação de saída que escreve dados numa fila de armazenamento, atualize o método da função para adicionar um parâmetro de ligação definido usando a QueueOutput anotação. O OutputBinding<T> objeto representa as mensagens que são 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 Node.js:

Usando o modelo Node.js v4, deve adicionar manualmente uma return: opção na definição da função usando a storageQueue função no output objeto. Esta função define a fila de armazenamento para escrever a return saída. A saída é gravada quando a função é concluída.

Visual Studio Code permite-lhe adicionar ligações ao seu ficheiro function.json seguindo um conjunto conveniente de indicações.

Para adicionar uma ligação, abra a paleta de comandos (F1) e escreva Azure Functions: adicionar ligação... , escolhe a função para a nova ligação e segue as indicações, que variam consoante o tipo de ligação que está a ser adicionada à função.

A seguir estão exemplos de prompts para definir uma nova ligação de saída de armazenamento:

Pedido valor Descrição
Selecionar direção de vinculação out A ligação é uma ligação de saída.
Selecionar associação com direção Azure Queue Storage A associação é uma associação de fila do Azure Storage.
O nome usado para identificar essa associação em seu código msg Nome que identifica o parâmetro de vinculação referenciado em seu código.
A fila para a qual a mensagem será enviada outqueue O nome da fila para a qual a ligação escreve. Quando o queueName não existe, a associação o cria no primeiro uso.
Selecione as definições de "local.settings.json" MyStorageConnection O nome de uma configuração de aplicação que contém a connection string da conta de armazenamento. A definição AzureWebJobsStorage contém a cadeia de ligação da conta de armazenamento que criou com a aplicação de funções.

Você também pode clicar com o botão direito do rato (Ctrl+clique no macOS) diretamente no arquivo function.json na pasta de funções, selecionar Adicionar vinculação e seguir as mesmas instruções.

Neste exemplo, a seguinte associação é adicionada à matriz bindings no seu arquivo function.json:

{
    "type": "queue",
    "direction": "out",
    "name": "msg",
    "queueName": "outqueue",
    "connection": "MyStorageConnection"
}

Por exemplo, a forma como defines a ligação de saída que escreve dados numa fila de armazenamento depende da versão do teu modelo Python:

Use o @queue_output decorador na função para definir um parâmetro de ligação nomeado para a saída da fila de armazenamento. O parâmetro func.Out define qual saída é escrita.

O exemplo a seguir mostra a definição de função depois de adicionar uma vinculação de saída do Armazenamento de Fila a uma função desencadeada por HTTP:

Como uma função acionada por HTTP também retorna uma resposta HTTP, a função retorna um MultiResponse objeto, que representa a saída HTTP e a saída da fila.

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{

Este exemplo é a definição do objeto MultiResponse, que inclui a ligação de saída.

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

Este exemplo utiliza integração ASP.NET Core. Se não estiveres a usar ASP.NET Core integração, tens de mudar 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 ligação de saída depende do seu modelo de processo. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligaçõ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 exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligaçõ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 ligação de saída depende da versão do seu modelo de Node.js. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligaçõ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 forma como defines a ligação de saída depende da versão do teu modelo Python. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligaçõ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 ligação de saída depende da versão do seu modelo de Node.js. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

Iniciar sessão no Azure

Antes de poderes criar recursos do Azure ou publicar a tua aplicação, tens de iniciar sessão no Azure.

  1. Se ainda não tiver iniciado sessão, selecione o ícone Azure na Barra de Atividades. Depois, em Resources, selecione Iniciar sessão em Azure.

     Captura de ecrã da janela de início de sessão do Azure no Visual Studio Code.

    Se já tiver sessão iniciada e visualizar as suas subscrições existentes, vá para a seção seguinte. Se ainda não tem uma conta Azure, selecione Criar uma Conta Azure. Os alunos podem selecionar Criar um Azure para a Conta dos Alunos.

  2. Quando for solicitado no navegador, selecione a sua conta Azure e inicie sessão usando as credenciais da sua conta Azure. Se criar uma nova conta, pode iniciar sessão depois de a sua conta ser criada.

  3. Depois de iniciar sessão com êxito, pode fechar a nova janela do browser. As subscrições que pertencem à sua conta Azure são exibidas na barra lateral.

Criar recursos do Azure

Antes de poder publicar o seu projeto de Funções no Azure, deve ter uma aplicação de funções e recursos relacionados na sua subscrição do Azure para executar o seu código. A aplicação de funções proporciona um contexto de execução para as suas funções. Quando publica do Visual Studio Code para uma aplicação de funções no Azure, o projeto é empacotado e implementado na aplicação de funções selecionada na sua subscrição do Azure.

Quando crias uma aplicação de funções no Azure, podes escolher entre um caminho de criação rápida de aplicações de funções usando os predefinidos ou um caminho que te dá opções avançadas, como usar recursos existentes do Azure. Dessa forma, você tem mais controle sobre a criação dos recursos remotos.

Nesta secção, cria uma aplicação de funções no plano Flex Consumption juntamente com recursos relacionados na sua subscrição do 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ção com opções avançadas.

  1. No Visual Studio Code, selecione F1 para abrir a paleta de comandos. No prompt (>), introduza e depois selecione Azure Functions: Criar Aplicação de Função em Azure.

  2. Nos prompts, forneça as seguintes informações:

    Pedido Ação
    Selecionar subscrição Selecione a subscrição do Azure para usar. O prompt não aparece quando você tem apenas uma assinatura visível em Recursos.
    Insira um novo nome de aplicativo de função Insira um nome globalmente exclusivo que seja válido em um caminho de URL. O nome que inserires é validado para garantir que é único no Azure Functions.
    Selecione um local para novos recursos Selecione uma região do Azure. Para um melhor desempenho, selecione uma região perto de si. Apenas as regiões suportadas pelos planos Flex Consumption são apresentadas.
    Selecione uma pilha de tempo de execução Selecione a versão de idioma que você executa localmente no momento.
    Selecionar tipo de autenticação de recurso Selecione Identidade gerenciada, que é a opção mais segura para se conectar à conta de armazenamento de host padrão.

    No painel Azure: Activity Log, a extensão Azure mostra o estado dos recursos individuais à medida que são criados em Azure.

    Captura de ecrã que mostra o registo da criação de recurso do Azure.

  3. Quando a aplicação de funções é criada, os seguintes recursos relacionados são criados na sua subscrição do Azure. Os recursos são nomeados com base no nome que você inseriu para seu aplicativo de função.

    • Um grupo de recursos, que é um contêiner lógico para recursos relacionados.
    • Um aplicativo de função, que fornece o ambiente para executar seu código de função. Um aplicativo de função 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 do Azure App Service, que define o host subjacente para a sua aplicação de funções.
    • Uma conta padrão Azure Storage, que é usada pelo anfitrião de Funções para manter o estado e outras informações sobre a sua aplicação de funções.
    • Uma instância do Application Insights conectada ao aplicativo de função e que rastreia o uso de suas funções no aplicativo.
    • Uma identidade gerenciada atribuída pelo usuário que é adicionada à função de Colaborador de Dados de Blob de Armazenamento na nova conta de armazenamento de host padrão.

    Depois de criar a aplicação de funções, é apresentada uma notificação e o pacote de implementação é aplicado.

    Gorjeta

    Por defeito, os recursos do Azure exigidos pela tua aplicação de funções são criados com base no nome que inseres para a tua aplicação de funções. Por padrão, os recursos são criados com o aplicativo de função no mesmo novo grupo de recursos. Se você quiser personalizar os nomes dos recursos associados ou reutilizar recursos existentes, publique o projeto com opções avançadas de criação.

Criar uma implementação do Azure Container Apps

Importante

Um novo método de alojamento para executar o Azure Functions diretamente no Azure Container Apps está agora disponível. Veja Suporte a Funções Nativas do Azure em Aplicações de Contentor do Azure. Esta integração permite-lhe utilizar todas as funcionalidades e capacidades do Azure Container Apps. Também beneficia do modelo de programação de funções e da simplicidade do dimensionamento automático fornecidos pelo Azure Functions.

Recomendamos essa abordagem para a maioria das novas cargas de trabalho. Para mais informações, consulte Azure Functions em Azure Container Apps.

Use o Visual Studio Code para criar recursos do Azure para um projeto de código containerizado. Quando a extensão deteta a presença de um Dockerfile durante a criação do recurso, pergunta se queres implementar a imagem do contentor em vez de apenas o código. O Visual Studio Code cria um ambiente Azure Container Apps para o seu projeto de código containerizado, integrado com o Azure Functions. Para mais informações, consulte Azure Container Apps hospedagem de Azure Functions.

Nota

A implementação de contentores requer a extensão Azure Container Apps para Visual Studio Code. Esta extensão está neste momento em versão de pré-visualização.

O processo de criação depende se você escolhe uma criação rápida ou se precisa usar opções avançadas:

  1. Em Visual Studio Code, pressione F1 para abrir a paleta de comandos. Procura e executa o comando Azure Functions: Create Function App in Azure....

  2. Quando solicitado, escolha Imagem do contentor.

  3. Forneça as seguintes informações nos prompts:

    Pedido Seleção
    Selecionar subscrição (opcional) Escolha a subscrição a utilizar. Você não verá esse prompt quando tiver apenas uma assinatura visível em Recursos.
    Insira um nome para a nova aplicação de funções Escreva um nome válido num caminho de URL. O nome que escreves é validado para garantir que é globalmente único nas Funções.
    Selecionar tipo de autenticação de recurso Selecione Identidade Gerida para que a sua aplicação se ligue a recursos remotos usando autenticação Microsoft Entra ID em vez de usar segredos partilhados (strings de ligação e chaves), que são menos seguros.
    Selecione um local para novos recursos Para um melhor desempenho, escolha uma região perto de si.
  4. Quando solicitado, introduza um nome para o ambiente da aplicação container.

    A extensão mostra o estado dos recursos individuais à medida que estão a ser criados em Azure no painel Azure: Registo de Atividade.

Para obter mais informações sobre os recursos necessários para executar suas funções em contêineres em Aplicativos de Contêiner, consulte Recursos necessários.

Nota

Atualmente, não pode usar o Visual Studio Code para implementar uma aplicação de funções containerizada num ambiente Container Apps integrado no Azure Functions. Em vez disso, deve publicar a sua imagem de contentor num registo de contentores e, em seguida, definir essa imagem de registo como a fonte de implementação para a sua aplicação de funções hospedada em Aplicações de Contentor. Para obter mais informações, consulte Criar seu aplicativo de função em um contêiner e Atualizar uma imagem no Registro.

Implantar arquivos de projeto

Configura deployment contínuo para que a tua aplicação de funções em Azure atualize quando atualizas os ficheiros de origem na localização de origem ligada. Também pode disponibilizar os seus ficheiros de projeto a partir do Visual Studio Code. Quando publica a partir de Visual Studio Code, pode tirar partido da tecnologia de implementação Zip.

Importante

Implementar para uma aplicação de funções existente sobrescreve sempre o conteúdo dessa aplicação no Azure.

  1. Na paleta de comandos, enter e depois selecione Azure Functions: Deploy to Function App.

  2. Selecione o aplicativo de função que você acabou de criar. Quando for solicitado para substituir implantações anteriores, selecione Implantar para transferir o seu código de função para o novo recurso da aplicação de funções.

  3. Quando a implementação estiver concluída, selecione Ver Saída para visualizar os resultados da criação e implementação, incluindo os recursos Azure que criou. Se você perder a notificação, selecione o ícone de sino no canto inferior direito para vê-lo novamente.

    Captura de ecrã da janela Ver Resultados.

Obtenha a URL de uma função ativada por HTTP no Azure

Para chamar uma função acionada por HTTP de um cliente, você precisa da URL da função, que está disponível após a implantação em seu aplicativo de função. Este URL inclui todas as teclas de função necessárias. Você pode usar a extensão para obter essas URLs para suas funções implantadas. Se quiseres apenas executar a função remota no Azure, usa a função Executar agora funcionalidade da extensão.

  1. Selecione F1 para abrir a paleta de comandos e depois encontre e execute o comando Azure Functions: Copiar URL da Função.

  2. Siga as instruções para selecionar a sua aplicação de funções no Azure e depois o gatilho HTTP específico que pretende invocar.

A URL da função é copiada para a área de transferência, juntamente com quaisquer chaves necessárias passadas 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 recebe o URL de uma função no Azure, usa a sua conta Azure para recuperar automaticamente as chaves necessárias para iniciar a função. Saiba mais sobre as teclas de acesso de função. Iniciar funções acionadas não HTTP requer o uso da chave admin.

Executar funções

A extensão Azure Functions permite executar funções individuais. Pode executar funções tanto no seu projeto no seu computador de desenvolvimento local como na sua subscrição do Azure.

Para funções de gatilho HTTP, a extensão chama o endpoint HTTP. Para outros tipos de gatilhos, a extensão chama 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 requer 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 a partir do Visual Studio Code, siga estes passos:

  1. Na paleta de comandos, introduza Azure Functions: Executar função agora e selecione a sua subscrição de Azure.

  2. Da lista, escolha a sua aplicação de funções no Azure. Se não vir a sua aplicação de função, certifique-se de que iniciou sessão na subscrição correta.

  3. Na lista, escolha a função que 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 Enter request body indica o formato do corpo. Se o seu aplicativo de função não tiver funções, um erro de notificação será exibido com esse erro.

    Quando a função é executada no Azure e devolve uma resposta, o Visual Studio Code mostra uma notificação.

Também pode executar a sua função a partir da área Azure: Functions abrindo o menu de atalho da função que quer executar na sua aplicação de funções na subscrição de Azure, e depois selecionando Executar Função Agora... .

Quando executa as suas funções no Azure a partir do Visual Studio Code, a extensão usa a sua conta no Azure para recuperar automaticamente as chaves necessárias para iniciar a função. Saiba mais sobre as teclas de acesso de função. Iniciar funções acionadas não HTTP requer o uso da chave admin.

Executar funções localmente

O runtime local é o mesmo que aloja a tua aplicação de funções no Azure. O runtime lê as definições locais do ficheirolocal.settings.json. Para executar seu projeto do Functions localmente, você deve atender a mais requisitos.

Configurar o projeto para ser executado localmente

O runtime Functions utiliza uma conta Azure Storage internamente para todos os tipos de gatilhos, exceto HTTP e webhooks. Defina a chave Values.AzureWebJobsStorage para uma cadeia de conexão válida de conta do Azure Storage.

Esta secção utiliza a extensão Azure Storage para Visual Studio Code com Azure Storage Explorer para se ligar ao armazenamento e recuperar a cadeia de ligação de armazenamento.

Para definir a cadeia de conexão da conta de armazenamento:

  1. No Visual Studio, abra Cloud Explorer, expanda Storage Account>Your Storage Account, depois selecione Properties e copie o valor Primary Connection String.

  2. No teu projeto, abre o ficheiro local.settings.json e define o valor da chave AzureWebJobsStorage para a connection string que copiaste.

  3. Repita a etapa anterior para adicionar chaves exclusivas à matriz Values para quaisquer outras conexões exigidas por suas funções.

Para obter mais informações, consulte Arquivo de configurações locais.

Depurar funções localmente

Para depurar suas funções, selecione F5. Se as Ferramentas Principais não estiverem disponíveis, você será solicitado a instalá-las. Quando o Core Tools está instalado e em execução, a saída é mostrada no Terminal. Esta etapa é a mesma que executar o func start comando Core Tools a partir do Terminal, mas com tarefas de compilação extras e um depurador anexado.

Quando o projeto está a correr, pode usar a função Executar Agora... funcionalidade da extensão para ativar as tuas funções como farias quando o projeto é implementado para Azure. Com o projeto a correr em modo de depuração, os pontos de interrupção são atingidos no Visual Studio Code, como seria de esperar.

  1. Na paleta de comandos, introduza Azure Functions: Executar função agora e escolha Projeto local.

  2. Escolha a função que deseja executar em seu projeto e digite o corpo da mensagem da solicitação em Inserir corpo da solicitação. Prima Enter para enviar esta mensagem de pedido para a sua função. O texto padrão em Enter request body deve indicar o formato do corpo. Se o seu aplicativo de função não tiver funções, um erro de notificação será exibido com esse erro.

  3. Quando a função é executada localmente e após a resposta ser recebida, surge uma notificação no 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 quando se executa localmente. Esta regra aplica-se tanto às teclas de função como às de nível administrativo.

Trabalhar com as configurações do aplicativo localmente

Quando a sua aplicação de funções corre em Azure, as definições exigidas pelas suas funções são armazenadas encriptadas nas definições da app. Durante o desenvolvimento local, essas configurações são adicionadas à coleção Values no arquivo local.settings.json. O arquivo local.settings.json também armazena as configurações usadas pelas ferramentas de desenvolvimento local.

Os itens da coleção Values no ficheiro local.settings.json do seu projeto destinam-se a espelhar itens nas definições application da sua aplicação de funções no Azure.

Por defeito, estas definições não são migradas automaticamente quando publicas o projeto para o Azure. Depois de a publicação terminar, pode optar por publicar as definições de local.settings.json para a sua aplicação de funções no Azure. Para saber mais, consulte Publicar configurações do aplicativo.

Os valores em ConnectionStrings nunca são publicados.

O teu código pode ler os valores das definições da aplicação da função como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.

  • O teu código pode ler os valores das definições da function app como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.
  • O teu código pode ler os valores das definições da function app como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.
  • O teu código pode ler os valores das definições da function app como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.
  • O teu código pode ler os valores das definições da function app como variáveis de ambiente. Para obter mais informações, consulte Variáveis de ambiente.

Definições de aplicação no Azure

As definições no ficheiro local.settings.json do teu projeto devem corresponder às definições da aplicação na aplicação de funções no Azure. Tem de adicionar quaisquer novas definições tanto à local.settings.json como à aplicação de funções no Azure. Essas configurações não são carregadas automaticamente quando você publica o projeto. Da mesma forma, deve descarregar quaisquer definições que crie na sua aplicação de funções no portal do seu projeto local.

Publicar configurações do aplicativo

A forma mais fácil de publicar as definições necessárias na tua app de funções no Azure é usar o link Definições de upload que aparece depois de publicares o teu projeto:

Captura de tela para carregar as configurações do aplicativo.

Também pode publicar definições usando o comando Azure Functions: Upload Local Setting na paleta de comandos. Pode adicionar definições individuais às definições da aplicação em Azure usando o comando Azure Functions: Adicionar Nova Definição.

Gorjeta

Certifique-se de salvar seu arquivo local.settings.json antes de publicá-lo.

Se o ficheiro local estiver encriptado, o processo desencripta-o, publica-o e volta a encriptá-lo. Se existirem valores conflitantes nas duas localizações, é-lhe pedido que escolha como proceder.

Consulte as definições existentes da aplicação na área Azure: Funções expandindo a sua subscrição, a sua aplicação de funções e Definições da Aplicação.

 Captura de ecrã para visualizar as definições da aplicação de funções em Visual Studio Code.

Descarregar definições do Azure

Se criares as definições da aplicação no Azure, podes descarregá-las para o teu ficheiro local.settings.json usando o comando Azure Functions: Download Remote Settings.

Tal como no upload, se o ficheiro local estiver encriptado, o processo desencripta-o, atualiza-o e volta a encriptá-lo. Se existirem valores conflitantes nas duas localizações, é-lhe pedido que escolha como proceder.

Instalar as extensões de enlace

Exceto para gatilhos HTTP e timer, as ligações são implementadas em pacotes de extensão.

Você deve instalar explicitamente os pacotes de extensão para os gatilhos e associações que precisam deles. O pacote específico que você instala depende do modelo de processo do seu projeto.

Execute o comando dotnet add package na janela Terminal para instalar os pacotes de extensão que você precisa em seu projeto. Este modelo demonstra como se adiciona um vínculo para uma biblioteca de classes de 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 ligação necessária. Você pode encontrar o artigo de referência de vinculação desejado na lista de ligações suportadas.

Substitua <TARGET_VERSION> no exemplo por uma versão específica do pacote, como 3.0.0-beta5. As versões válidas estão listadas nas páginas de pacotes individuais em NuGet.org. As versões principais que correspondem ao tempo de execução atual do Functions são especificadas no artigo de referência para a associação.

Gorjeta

Você também pode usar os comandos NuGet no C# Dev Kit para instalar pacotes de extensão de vinculação.

O script C# usa pacotes de extensão.

A maneira mais fácil de instalar extensões de ligação é habilitar pacotes de extensão. Quando você habilita 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 para corresponder ao seguinte código:

{
    "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ões para instalar extensões de vinculação para seu projeto, consulte Instalar extensões explicitamente.

Funções de monitorização

Quando executas funções localmente, o Core Tools transmite os dados de registo para a consola do Terminal. Também podes obter dados de log quando o teu projeto de Funções é executado numa aplicação de funções no Azure. Pode ligar-se a logs de streaming no Azure para ver dados de registo quase em tempo real. Deve ativar o Application Insights para uma compreensão mais completa do comportamento da sua aplicação de funções.

Logs de streaming

Quando você está desenvolvendo um aplicativo, geralmente é útil ver as informações de registro em tempo quase real. Pode visualizar um fluxo de ficheiros de registo gerados pelas suas funções. Ative os registos na paleta de comandos com o comando Azure Functions: Start streaming logs. Esta saída é um exemplo de logs de streaming para uma solicitação para uma função acionada por HTTP:

Captura de tela para saída de logs de streaming para o gatilho H T T P.

Para saber mais, consulte Logs de streaming.

Application Insights

Você deve monitorar a execução de suas funções integrando seu aplicativo de função com o Application Insights. Quando crias uma aplicação de funções no portal do Azure, esta integração ocorre por defeito. Quando cria a sua aplicação de funções durante a publicação no Visual Studio, precisa de integrar o Application Insights por si próprio. Para saber como, consulte Habilitar a integração do Application Insights.

Para saber mais sobre monitorização usando Application Insights, consulte Monitor Azure Functions.

Projetos de script C#

Por padrão, todos os projetos C# são criados como projetos de biblioteca de classes compilados em C#. Se preferir trabalhar com projetos de scripts C#, deve selecionar o script C# como linguagem padrão nas definições da extensão Azure Functions:

  1. Selecione Ficheiro>Preferências>Configurações.

  2. Vai a User Settings>Extensões>Azure Functions.

  3. Selecione C#Script de Função Azure: Linguagem do Projeto.

Depois de concluir essas etapas, as chamadas feitas para as Ferramentas Principais subjacentes incluem a --csx opção, que gera e publica arquivos de projeto de script C# (.csx). Quando especificas esta linguagem predefinida, todos os projetos que crias são predefinidos para projetos de script C#. Você não será solicitado a escolher um idioma do projeto quando um padrão for definido. Para criar projetos em outros idiomas, você deve alterar essa configuração ou removê-la do arquivo de settings.json do usuário. Depois de remover essa configuração, você será solicitado novamente a escolher seu idioma ao criar um projeto.

Referência da paleta de comandos

A extensão Azure Functions fornece uma interface gráfica útil para interagir com as suas aplicações de funções no Azure. A mesma funcionalidade também está disponível como comandos na paleta de comandos (F1). Estes comandos do Azure Functions estão disponíveis:

comando Azure Functions Descrição
Adicionar novas configurações Cria uma nova configuração de aplicação no Azure. Para saber mais, consulte Publicar configurações do aplicativo. Também poderá ter de transferir esta definição para as suas definições locais.
Configurar origem de implantação Liga a tua aplicação de funções no Azure a um repositório Git local. Para saber mais, consulte Implantação contínua para Azure Functions.
Liga-se ao GitHub Repositório Liga a tua aplicação de funções a um repositório do GitHub.
Copiar URL da função Obtém o URL remoto de uma função ativada por HTTP que está a correr no Azure. Para saber mais, consulte Obter a URL da função implantada.
Criar aplicação de função em Azure Cria uma nova aplicação de funções na sua subscrição no Azure. Para saber mais, consulte a secção sobre como publicar numa nova aplicação de funções em Azure.
Desencriptar configurações Descifra definições locais que foram encriptadas pelo comando Azure Functions: Encrypt Settings.
Eliminar Aplicação de Função Remove uma aplicação de funções da sua subscrição no Azure. Quando não há outras aplicações no plano do App Service, tens a opção de eliminar 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. Seu projeto local não é afetado.
Excluir função Remove uma função existente de uma aplicação de funções no Azure. Como essa exclusão não afeta seu projeto local, considere remover a função localmente e, em seguida , republicar seu projeto.
Excluir proxy Remove um proxy do Azure Functions da sua aplicação de funções no Azure. Para saber mais sobre proxies, consulte Work with Azure Functions Proxies.
Excluir configuração Elimina uma definição de uma aplicação de funções no Azure. Essa exclusão não afeta as configurações no arquivo local.settings.json.
Desconectar do Repo Remove a ligação de implementação contínua entre uma aplicação de funções na Azure e um repositório de controlo de versão.
Baixar Configurações remotas Descarrega as definições da aplicação de função escolhida em Azure para o teu ficheiro local.settings.json. Se o ficheiro local estiver encriptado, é desencriptado, atualizado e encriptado novamente. Se houver configurações com valores conflitantes nos dois locais, você será solicitado a escolher como proceder. Certifique-se de salvar as alterações no arquivo local.settings.json antes de executar este comando.
Editar configurações Altera o valor de uma definição existente de aplicação de funções no Azure. Este comando não afeta as configurações no arquivo local.settings.json.
Criptografar configurações Criptografa itens individuais na Values matriz nas configurações locais. Nesse arquivo, IsEncrypted também é definido como true, que especifica que as configurações de execução local são descriptografadas antes de serem usadas. Criptografe as configurações locais para reduzir o risco de vazamento de informações valiosas. No Azure, as definições de aplicação são sempre armazenadas encriptadas.
Execute a função agora Inicia manualmente uma função usando APIs de administrador. Use este comando para testes, tanto localmente durante a depuração como contra funções a correr no Azure. Quando uma função no Azure inicia, a extensão obtém automaticamente uma chave de administrador, que utiliza para chamar as APIs de administração remotas 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ê passe nenhum dado.
Inicializar projeto para uso com o VS Code Adiciona os ficheiros necessários do projeto Visual Studio Code a um projeto Functions existente. Use este comando para trabalhar com um projeto que você criou usando as Ferramentas Principais.
Instalar ou Atualizar Azure Functions Core Tools Instala ou atualiza Azure Functions Core Tools, que é usado para executar funções localmente.
Reimplementar Permite redistribuir ficheiros de projeto de um repositório Git ligado para uma implementação específica no Azure. Para republicar atualizações locais de Visual Studio Code, republique o seu projeto.
Renomear configurações Altera o nome da chave de uma definição existente de uma aplicação de funções no Azure. Este comando não afeta as configurações no arquivo local.settings.json. Depois de renomeares as definições no Azure, deves descarregar essas alterações para o projeto local.
Reiniciar Reinicia a aplicação de funções no Azure. A implantação de atualizações também reinicia o aplicativo de função.
Definir AzureWebJobsStorage Define o AzureWebJobsStorage valor da configuração do aplicativo. Esta configuração é exigida pelo Azure Functions. É definido quando uma aplicação de funções é criada no Azure.
Início Inicia uma aplicação de função parada no Azure.
Iniciar Transmissão de Registos Inicia os registos de streaming da aplicação de funções no Azure. Usa logs em streaming durante a resolução remota de problemas no Azure se precisares de ver a informação de registo quase em tempo real. Para saber mais, consulte Logs de streaming.
Parar Interrompe uma aplicação de funções que está a ser executada no Azure.
Parar transmissão de registos Interrompe os registos de streaming da aplicação de função no Azure.
Alternar como configuração de slot Quando habilitado, garante que uma configuração de aplicativo persista para um determinado slot de implantação.
Desinstalar Azure Functions Core Tools Remove as Ferramentas Centrais do Azure Functions, que são exigidas pela extensão.
Carregar configurações locais Carrega as definições do teu ficheiro local.settings.json para a aplicação de função escolhida no Azure. Se o ficheiro local estiver encriptado, é desencriptado, carregado e encriptado novamente. Se houver configurações com valores conflitantes nos dois locais, você será solicitado a escolher como proceder. Certifique-se de salvar as alterações no arquivo local.settings.json antes de executar este comando.
Visualizar commit em GitHub Mostra o commit mais recente numa implementação específica quando a sua aplicação de funções está ligada a um repositório.
Exibir logs de implantação Mostra-te os registos de uma implementação específica na aplicação de funções no Azure.

Próximos passos

Para saber mais sobre Azure Functions Core Tools, consulte Work with Azure Functions Core Tools.

Para saber mais sobre o desenvolvimento de funções como bibliotecas de classes .NET, consulte Azure Functions C# developer reference. Este artigo também fornece ligações para exemplos de como usar atributos para declarar os vários tipos de ligações suportadas pelo Azure Functions.