Desenvolver o Azure Functions localmente usando o Core Tools

O Azure Functions Core Tools permite o desenvolvimento e testes funções no computador local. Quando estiver pronto, você também poderá usar o Core Tools para implantar seu projeto de código no Azure e trabalhar com as configurações do aplicativo.

Você está exibindo a versão em C# deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido do Core Tools.

Você está exibindo a versão do Java deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido do Core Tools.

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 na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido do Core Tools.

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 na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido do Core Tools.

Você está exibindo a versão do Python deste artigo. Certifique-se de selecionar a linguagem de programação do Functions de sua preferência na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido do Core Tools.

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 na parte superior do artigo.

Se quiser começar imediatamente, conclua o artigo de início rápido do Core Tools.

Instalação das ferramentas básicas do Azure Functions

A maneira recomendada de instalar o Core Tools depende do sistema operacional do computador de desenvolvimento local.

As etapas a seguir usam um instalador do Windows (MSI) para instalar o Core Tools v4.x. Para obter mais informações sobre outros instaladores baseados em pacote, confira o arquivo leiame do Core Tools.

Baixe e execute o instalador do Core Tools, com base em sua versão do Windows:

Se você usou anteriormente o instalador do Windows (MSI) para instalar o Core Tools no Windows, desinstale a versão antiga em Adicionar ou Remover Programas antes de instalar a versão mais recente.

Para obter ajuda com questões relacionadas a versões, consulte Versões das Core Tools.

Criar seu projeto local

Importante

Para o Python, você deve executar comandos do Core Tools em um ambiente virtual. Para saber mais, confira Início Rápido: criar uma função Python no Azure na linha de comando.

Na janela do terminal ou em um prompt de comando, execute o seguinte comando para criar um projeto na pasta MyProjFolder:

func init MyProjFolder --worker-runtime dotnet-isolated 

Por padrão, esse comando cria um projeto executado em processo com o host do Functions na versão do LTS (Suporte de Longo Prazo) do .NET Core atual. Você pode utilizar a opção --target-framework para ter como destino uma versão específica com suporte do .NET, incluindo o .NET Framework. Para obter mais informações, confira a referência do func init.

Para obter uma comparação entre os dois modelos de processo do .NET, consulte o artigo comparação do modo de processo.

O Java usa um arquétipo Maven para criar o projeto local, juntamente com sua primeira função de gatilho HTTP. Em vez de usar func init e func new, você deve seguir as etapas no Início rápido da linha de comando.

func init MyProjFolder --worker-runtime javascript --model V4

Esse comando cria um projeto JavaScript que utiliza a versão do modelo de programação desejada.

func init MyProjFolder --worker-runtime typescript --model V4

Esse comando cria um projeto TypeScript que utiliza a versão do modelo de programação desejada.

func init MyProjFolder --worker-runtime powershell
func init MyProjFolder --worker-runtime python --model V2

Esse comando cria um projeto Python que utiliza a versão do modelo de programação desejada.

Quando você executa func init sem a opção --worker-runtime, é solicitado que escolha a linguagem do projeto. Para saber mais sobre as opções disponíveis para o comando func init, consulte a referência func init.

Criar uma função

Para adicionar uma função ao projeto, execute o func new comando usando a opção --template para selecionar o modelo de gatilho. O exemplo a seguir cria um gatilho HTTP chamado MyHttpTrigger:

func new --template "Http Trigger" --name MyHttpTrigger

Esse exemplo cria um gatilho de Armazenamento de Filas chamado MyQueueTrigger:

func new --template "Azure Queue Storage Trigger" --name MyQueueTrigger

As seguintes considerações se aplicam ao adicionar funções:

  • Ao executar func new sem a opção --template, você será solicitado a escolher um modelo.

  • Use o comando func templates list para ver a lista completa de modelos disponíveis para seu idioma.

  • Ao adicionar um gatilho que se conecta a um serviço, você também precisará adicionar uma configuração de aplicativo que referencie uma cadeia de conexão ou uma identidade gerenciada ao arquivo local.settings.json. O uso de configurações de aplicativo dessa forma impede que você precise inserir credenciais em seu código. Para obter mais informações, confira Trabalhar localmente com configurações de aplicativo.

  • O Core Tools também adiciona uma referência à extensão de associação específica ao seu projeto C#.

Para saber mais sobre as opções disponíveis para o comando func new, consulte a referência func new.

Adicionar uma associação à sua função

O Functions fornece um conjunto de associações de entrada e saída específicas do serviço, o que facilita a conexão da sua função com outros serviços do Azure sem precisar utilizar os SDKs de cliente específicos do serviço. Para obter mais informações, consulte Gatilhos e conceitos de associações do Azure Functions.

Para adicionar uma associação de entrada ou saída a uma função existente, é necessário atualizar manualmente a definição da função.

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 de gatilho HTTP:

Como uma função de gatilho 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 static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
    FunctionContext executionContext)
{

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; }
}

Ao aplicar esse exemplo ao seu projeto, talvez seja necessário alterar HttpRequest para HttpRequestData e IActionResult para HttpResponseData, dependendo se estiver usando a Integração com o ASP.NET Core ou não.

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.

Associação de exemplo para o modelo v4 do Node.js ainda não disponível.

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 do 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.

Associação de exemplo para o modelo v4 do Node.js ainda não disponível.

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.

As seguintes considerações se aplicam ao adicionar associações a uma função:

  • Ao adicionar associações que se conectam a um serviço, você também precisará adicionar uma configuração de aplicativo que referencie uma cadeia de conexão ou uma identidade gerenciada ao arquivo local.settings.json. Para obter mais informações, confira Trabalhar localmente com configurações de aplicativo.
  • Quando você adiciona uma associação com suporte, a extensão já deve estar instalada quando seu aplicativo usar o pacote de extensão. Para obter mais informações, consulte pacotes de extensão.
  • Ao adicionar uma associação que requer uma nova extensão de associação, você também deverá adicionar uma referência a essa extensão de associação específica em seu projeto C#.

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.

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.

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.

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.

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.

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.

Iniciar o runtime do Functions

Antes de executar ou depurar as funções do seu projeto, você precisará iniciar o host do Functions no diretório raiz do seu projeto. O host permite os gatilhos para todas as funções no projeto. Use esse comando para iniciar o runtime local:

mvn clean package 
mvn azure-functions:run
func start
npm install
npm start     

Esse comando precisa ser executado em um ambiente virtual.

Quando o host do Functions é iniciado, ele gera uma saída com uma lista de funções no projeto, incluindo as URLs de quaisquer funções disparadas por HTTP, como neste exemplo:

Found the following functions:
Host.Functions.MyHttpTrigger

Job host started
Http Function MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger

Lembre-se das seguintes considerações ao executar suas funções localmente:

  • Por padrão, a autorização não é imposta localmente para pontos de extremidade HTTP. Isso significa que todas as solicitações HTTP locais são tratadas como authLevel = "anonymous". Para obter mais informações, confira o artigo de associação HTTP. Você pode usar a opção --enableAuth para exigir autorização ao executar localmente. Para obter mais informações, veja func start

  • Você pode usar o emulador do Azurite local ao executar localmente funções que exigem acesso aos serviços de Armazenamento do Microsoft Azure (Armazenamento de Filas, Armazenamento de Blobs e Armazenamento de Tabelas) sem precisar se conectar a esses serviços no Azure. Ao usar a emulação local, inicie o Azurite antes de iniciar o host local (func.exe). Para obter mais informações, consulte Emulação de armazenamento local.

  • Você pode usar a emulação local do Azurite para atender aos requisitos de armazenamento do trabalho do Python v2.
  • Você pode disparar funções não HTTP localmente sem se conectar a um serviço dinâmico. Para obter mais informações, consulte Executar uma função local.

  • Quando você inclui as informações de conexão do Application Insights no arquivo local.settings.json, os dados do log local são gravados na instância específica do Application Insights. Para manter os dados de telemetria locais separados dos dados de produção, considere o uso de uma instância separada do Application Insights para desenvolvimento e teste.

  • Ao usar a versão 1.x das Core Tools, use o comando func host start para iniciar o runtime local.

Executar uma função local

Com o host local do Functions (func.exe) em execução, agora você pode disparar funções individuais para executar e depurar o código da função. A forma de execução de uma função individual depende do tipo de gatilho.

Observação

Os exemplos neste tópico usam a ferramenta cURL para enviar solicitações HTTP do terminal ou de um prompt de comando. Você pode usar uma ferramenta de sua escolha para enviar solicitações HTTP para o servidor local. A ferramenta cURL está disponível por padrão em sistemas baseados em Linux e no Windows 10 build 17063 e posteriores. No Windows antigo, primeiro você precisa baixar e instalar a ferramenta cURL.

Os gatilhos HTTP são iniciados enviando uma solicitação HTTP ao ponto de extremidade local e à porta, conforme exibido na saída do func.exe, que tem esse formato geral:

http://localhost:<PORT>/api/<FUNCTION_NAME>

Neste modelo de URL, <FUNCTION_NAME> é o nome da função ou rota e <PORT> é a porta local na qual func.exe está escutando.

O seguinte comando cURL aciona a função de início rápido MyHttpTrigger de uma solicitação GET com o parâmetro name transmitido na cadeia de consulta:

curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks

Este exemplo é a mesma função chamada de uma solicitação POST que passa o nome no corpo da solicitação, mostrada tanto no shell Bash quanto na linha de comando do Windows:

curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'
curl --request POST http://localhost:7071/api/MyHttpTrigger --data "{'name':'Azure Rocks'}"

As seguintes considerações se aplicam ao chamar pontos de extremidade HTTP localmente:

  • Você pode fazer solicitações GET de um navegador passando dados na cadeia de consulta. Para todos os outros métodos HTTP, você deve usar cURL, Fiddler, Postman ou uma ferramenta de teste HTTP compatível com solicitações POST.

  • Use o mesmo nome de servidor e porta no qual o host do Functions está escutando. Você vê um ponto de extremidade como esse na saída gerada ao iniciar o host do Function. Chame essa URL usando qualquer método HTTP com suporte do disparador.

Publicar no Azure

O Azure Functions Core Tools dá suporte a três tipos de implantação:

Tipo de implantação Comando Descrição
Arquivos de projeto func azure functionapp publish Implanta arquivos de projeto de função diretamente em seu aplicativo de funções usando a implantação zip.
Aplicativos de Contêiner do Azure func azurecontainerapps deploy Implanta um aplicativo de funções em contêiner em um ambiente de Aplicativos de Contêiner.
Cluster do Kubernetes func kubernetes deploy Implanta seu aplicativo de funções do Linux como um contêiner do Docker personalizado em um cluster do Kubernetes.

Você precisa ter a CLI do Azure ou o Azure PowerShell instalados localmente para poder fazer uma publicação no Azure por meio das Core Tools. Por padrão, as Core Tools usam essas ferramentas para autenticar com sua conta do Azure.

Se você não tiver essas ferramentas instaladas, precisará obter um token de acesso válido para usar durante a implantação. Você pode apresentar um token de acesso usando a opção --access-token nos comandos de implantação.

Implantar arquivos de projeto

Para publicar seu código local para um aplicativo de funções no Azure, use o comando func azure functionapp publish publish, como no exemplo a seguir:

func azure functionapp publish <FunctionAppName>

Esse comando publica arquivos de projeto do diretório atual para o <FunctionAppName> como um pacote de implantação .zip. Se o projeto exigir compilação, ele será feito remotamente durante a implantação.

O Java usa o Maven para publicar seu projeto local no Azure, em vez de Core Tools. Use o seguinte comando Maven para publicar seu projeto no Azure:

mvn azure-functions:deploy

Quando você executa esse comando, os recursos do Azure são criados durante a implantação inicial com base nas configurações no arquivo pom.xml. Para obter mais informações, consulte Implantar o projeto de função no Azure.

As seguintes considerações se aplicam a esse tipo de implantação:

Implantar contêineres

O Core Tools permite implantar seu aplicativo de funções conteineirizado em ambientes de Aplicativos de Contêiner do Azure gerenciados e em clusters do Kubernetes que você gerencia.

Use o comando func azurecontainerapps deploy a seguir para implantar uma imagem de contêiner existente em um ambiente de Aplicativos de Contêiner:

func azurecontainerapps deploy --name <APP_NAME> --environment <ENVIRONMENT_NAME> --storage-account <STORAGE_CONNECTION> --resource-group <RESOURCE_GROUP> --image-name <IMAGE_NAME> [--registry-password] [--registry-server] [--registry-username]

Quando você implanta em um ambiente de Aplicativos de Contêiner do Azure, as seguintes considerações se aplicam:

  • O ambiente e a conta de armazenamento já devem existir. A cadeia de conexão da conta de armazenamento fornecida é usada pelo aplicativo de funções implantado.

  • Você não precisa criar um recurso de aplicativo de funções separado ao implantar nos Aplicativos de Contêiner.

  • Cadeias de conexão de armazenamento e outras credenciais de serviço são segredos importantes. Certifique-se de armazenar com segurança todos os arquivos de script usando func azurecontainerapps deploy e não os armazene em nenhum sistema de controle de origem acessível ao público. Você pode criptografar o arquivo local.settings.json para maior segurança.

Para obter mais informações, consulte Aplicativos de Contêiner do Azure que hospedam o Azure Functions.

Trabalhe com as configurações do aplicativo localmente

Ao executar em um aplicativo de funções no Azure, as configurações exigidas por suas funções são armazenadas com segurança nas configurações do aplicativo. 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 locais.

Os itens da Values coleção no arquivo local.settings.json do seu projeto destinam-se a espelhar itens nas configurações do aplicativo do seu aplicativo de funções no Azure.

As seguintes considerações se aplicam ao trabalhar com o arquivo de configurações local:

  • Como o local.settings.json pode conter segredos, como cadeias de conexão, você nunca deve armazená-lo em um repositório remoto. O Core Tools ajuda você a criptografar esse arquivo de configurações local para melhorar a segurança. Para obter mais informações, confira Arquivo de configurações local. Você pode criptografar o arquivo local.settings.json para maior segurança.

  • Por padrão, essas configurações locais não são migradas automaticamente quando o projeto é publicado no Azure. Use a opção --publish-local-settings quando publicar seus arquivos de projeto para se certificar de que essas configurações serão adicionadas ao aplicativo de funções no Azure. Os valores na seção ConnectionStrings nunca são publicados. Você também pode carregar configurações do arquivo local.settings.json a qualquer momento.

  • Você pode baixar e substituir as configurações no arquivo local.settings.json com as configurações do aplicativo de funções no Azure. Para obter mais informações, confira Download configurações de aplicativo.

  • Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
  • Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
  • Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
  • Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.
  • Os valores de configuração do aplicativo de funções também podem ser lidos em seu código como variáveis de ambiente. Para obter mais informações, confira Variáveis de ambiente.

Fazer download das configurações do aplicativo

Na raiz do projeto, use o seguinte comando para fazer download de todas as configurações de aplicativo do aplicativo myfunctionapp12345 no Azure:

func azure functionapp fetch-app-settings myfunctionapp12345

Esse comando substitui todas as configurações existentes no arquivo local.settings.json por valores do Azure. Quando ainda não estiverem presentes, novos itens serão adicionados à coleção. Para obter mais informações, consulte o comando func azure functionapp fetch-app-settings.

Fazer download de uma cadeia de conexão de armazenamento

O Core Tools também facilita a obtenção da cadeia de conexão de qualquer conta de armazenamento à qual você tenha acesso. Na raiz do projeto, use o comando a seguir para fazer download da cadeia de conexão de uma conta de armazenamento chamada mystorage12345.

func azure storage fetch-connection-string mystorage12345

Esse comando adiciona uma configuração chamada mystorage12345_STORAGE ao arquivo local.settings.json, que contém a cadeia de conexão da conta mystorage12345. Para obter mais informações, consulte o comando func azure storage fetch-connection-string.

Para melhorar a segurança durante o desenvolvimento, considere criptografar o arquivo local.settings.json.

Carregar as configurações locais para o Azure

Quando você publica seus arquivos de projeto no Azure sem usar a opção --publish-local-settings, as configurações no arquivo local.settings.json não são definidas em seu aplicativo de funções. Você sempre pode executar novamente o func azure functionapp publish com a opção --publish-settings-only para carregar apenas as configurações sem republicar os arquivos de projeto.

O exemplo a seguir carrega apenas as configurações da coleção Values no arquivo local.settings.json para o aplicativo de funções no Azure chamado myfunctionapp12345:

func azure functionapp publish myfunctionapp12345 --publish-settings-only

Criptografar o arquivo de configurações local

Para melhorar a segurança de cadeias de conexão e outros dados valiosos em suas configurações locais, o Core Tools permite criptografar o arquivo local.settings.json. Quando esse arquivo é criptografado, o runtime descriptografa automaticamente as configurações quando necessário da mesma forma que faz com a configuração do aplicativo no Azure. Você também pode descriptografar um arquivo criptografado localmente para trabalhar com as configurações.

Use o seguinte comando para criptografar o arquivo de configurações local para o projeto:

func settings encrypt

Use o seguinte comando para descriptografar uma configuração local criptografada, para que você possa trabalhar com ela:

func settings decrypt

Quando o arquivo de configurações é criptografado e descriptografado, a configuração IsEncrypted do arquivo também é atualizada.

Configurar extensões de associação

As associações e os gatilhos do Functions são implementados como pacotes de extensão .NET (NuGet). Para poder usar uma extensão de associação específica, essa extensão deve estar instalada no projeto.

Esta seção não se aplica à versão 1.x do runtime do Functions. Na versão 1.x, as associações com suporte foram incluídas na extensão principal do produto.

Para projetos de biblioteca de classes C#, adicione referências aos pacotes NuGet específicos para as extensões de associação exigidas por suas funções. O projeto de script C# (.csx) deve usar os pacotes de extensão.

O Functions fornece pacotes de extensões para facilitar o trabalho com extensões de associação em seu projeto. Os pacotes de extensão, que são versionados e definidos no arquivo host.json, instalam um conjunto completo de pacotes de extensão de associação compatíveis para seu aplicativo. O host.json já deve ter os pacotes de extensão habilitados. Se, por algum motivo, você precisar adicionar ou atualizar o pacote de extensão no arquivo host.json, confira Pacotes de extensão.

Se você precisar usar uma extensão de associação ou uma versão de extensão que não esteja em um pacote com suporte, será necessário instalar a extensão manualmente. Para esses cenários raros, consulte o comando func extensions install.

Versões de Core Tools

As versões principais do Azure Functions Core Tools estão vinculadas a versões principais específicas do runtime do Azure Functions. Por exemplo, a versão 4.x do Core Tools dá suporte à versão 4.x do runtime do Functions. Essa é a versão principal recomendada do runtime do Functions e do Core Tools. Você pode determinar a versão mais recente do Core Tools no repositório do Azure Functions Core Tools.

Execute o seguinte comando para determinar a versão de sua instalação atual do Core Tools:

func --version

A menos que seja indicado o contrário, os exemplos neste artigo são para a versão 4.x.

As considerações a seguir se aplicam às instalações do Core Tools:

  • Você só pode instalar uma versão do Core Tools em um determinado computador.

  • Ao atualizar para a versão mais recente de Core Tools, você deverá usar o mesmo método utilizado na instalação original para executar a atualização. Por exemplo, se você utilizou um MSI no Windows, desinstale o MSI atual e instale o mais recente. Ou, se você tiver usado o npm, execute novamente o npm install command.

  • As versões 2.x e 3.x do Core Tools foram usadas com as versões 2.x e 3.x do runtime do Functions, que chegaram ao fim do suporte. Para obter mais informações, consulte Visão geral de versões do Azure Functions runtime.

  • A versão 1.x do Core Tools é necessária ao usar a versão 1.x do Functions Runtime, que ainda tem suporte. Essa versão do Core Tools só pode ser executada localmente em computadores Windows. Se você estiver executando a versão 1.x, considere migrar seu aplicativo para a versão 4.x.

Ao utilizar o Visual Studio Code, você poderá integrar o Rosetta com o Terminal interno. Para obter mais informações, consulte Habilitar a emulação no Visual Studio Code.

Próximas etapas

Saiba como desenvolver, testar e publicar funções do Azure usando as ferramentas principais do Azure Functions. As principais ferramentas do Azure Functions são Código-fonte aberto e hospedado no GitHub. Para arquivar uma solicitação de bug ou recurso, abra um problema do GitHub.