Verificação deAzure Functions

O Azure Functions fornece uma experiência de computação sem servidor.Azure functions provide a serverless compute experience. Uma função é invocada por um gatilho (como o acesso a um ponto de extremidade http ou um temporizador) e executa um bloco de código ou lógica de negócios.A function is invoked by a trigger (such as access to an HTTP endpoint or a timer) and executes a block of code or business logic. As funções também dão suporte a associações especializadas que se conectam a recursos como armazenamento e filas.Functions also support specialized bindings that connect to resources like storage and queues.

Logotipo do Azure Functions

Há duas versões do Azure Functions Framework.There are two versions of the Azure Functions framework. A versão herdada dá suporte ao .NET Framework completo e o novo tempo de execução dá suporte a aplicativos .NET Core de plataforma cruzada.The legacy version supports the full .NET Framework and the new runtime supports cross-platform .NET Core applications. Há suporte para C# idiomas adicionais, além F#de JavaScript, e Java.Additional languages besides C# such as JavaScript, F#, and Java are supported. As funções criadas no portal fornecem uma sintaxe de script avançada.Functions created in the portal provide a rich scripting syntax. As funções criadas como projetos autônomos podem ser implantadas com recursos e suporte completos à plataforma.Functions created as standalone projects can be deployed with full platform support and capabilities.

Para obter mais informações, consulte a documentação do Azure Functions.For more information, see Azure Functions documentation.

Funções V1 versus V2Functions v1 vs. v2

Há duas versões do tempo de execução de Azure Functions: 1. x e 2. x.There are two versions of the Azure Functions runtime: 1.x and 2.x. A versão 1. x está disponível para o público geral (GA).Version 1.x is generally available (GA). Ele dá suporte ao desenvolvimento .NET do portal ou de máquinas Windows e usa o .NET Framework.It supports .NET development from the portal or Windows machines and uses the .NET Framework. 1. x dá C#suporte a, JavaScript F#e, com suporte experimental para Python, PHP, TypeScript, lote, bash e PowerShell.1.x supports C#, JavaScript, and F#, with experimental support for Python, PHP, TypeScript, Batch, Bash, and PowerShell.

A versão 2. x também está geralmente disponível agora.Version 2.x is also generally available now. Ele aproveita o .NET Core e dá suporte ao desenvolvimento de plataforma cruzada em computadores Windows, macOS e Linux.It leverages .NET Core and supports cross-platform development on Windows, macOS, and Linux machines. 2. x adiciona o suporte de primeira classe para Java, mas ainda não dá suporte diretamente a qualquer uma das linguagens experimentais.2.x adds first-class support for Java but doesn't yet directly support any of the experimental languages. A versão 2. x usa um novo modelo de extensibilidade de associação que permite extensões de terceiros para a plataforma, controle de versão independente de associações e um ambiente de execução mais simplificado.Version 2.x uses a new binding extensibility model that enables third-party extensions to the platform, independent versioning of bindings, and a more streamlined execution environment.

Há um problema conhecido em 1. x com suporte para redirecionamento de associação.There is a known issue in 1.x with binding redirect support. O problema é específico do desenvolvimento do .NET.The issue is specific to .NET development. Os projetos com dependências em bibliotecas que são uma versão diferente das bibliotecas incluídas no tempo de execução são afetados.Projects with dependencies on libraries that are a different version from the libraries included in the runtime are impacted. A equipe de funções se comprometeu a fazer o progresso concreto do problema.The functions team has committed to making concrete progress on the problem. A equipe abordará redirecionamentos de associação em 2. x antes de entrar em disponibilidade geral.The team will address binding redirects in 2.x before it goes into general availability. A declaração de equipe oficial com correções e soluções alternativas sugeridas está disponível aqui: resolução de assembly em Azure Functions.The official team statement with suggested fixes and workarounds is available here: Assembly resolution in Azure Functions.

Para obter mais informações, consulte comparar 1. x e 2. x.For more information, see Compare 1.x and 2.x.

Suporte à linguagem de programaçãoProgramming language support

Os idiomas a seguir têm suporte em disponibilidade geral (GA), visualização ou experimental.The following languages are supported either in general availability (GA), preview, or experimental.

LinguagemLanguage 1.x1.x 2.x2.x
C#C# GA {1>Preview<1}Preview
JavaScriptJavaScript GA {1>Preview<1}Preview
F#F# GA
JavaJava {1>Preview<1}Preview
PythonPython HabilitaçãoExperimental
PHPPHP HabilitaçãoExperimental
TypeScriptTypeScript HabilitaçãoExperimental
LoteBatch HabilitaçãoExperimental
RasoBash HabilitaçãoExperimental
PowerShellPowerShell HabilitaçãoExperimental

Para obter mais informações, consulte idiomas com suporte.For more information, see Supported languages.

Planos do serviço de aplicativoApp service plans

As funções são apoiadas por um plano do serviço de aplicativo.Functions are backed by an app service plan. O plano define os recursos usados pelo aplicativo de funções.The plan defines the resources used by the functions app. Você pode atribuir planos a uma região, determinar o tamanho e o número de máquinas virtuais que serão usadas e escolher um tipo de preço.You can assign plans to a region, determine the size and number of virtual machines that will be used, and pick a pricing tier. Para uma abordagem verdadeira sem servidor, os aplicativos de função podem usar o plano de consumo .For a true serverless approach, function apps may use the consumption plan. O plano de consumo dimensionará o back-end automaticamente com base na carga.The consumption plan will scale the back end automatically based on load.

Para obter mais informações, consulte planos do serviço de aplicativo.For more information, see App service plans.

Criar sua primeira funçãoCreate your first function

Há três maneiras comuns de criar aplicativos de funções.There are three common ways you can create function apps.

  • Funções de script no Portal.Script functions in the portal.
  • Crie os recursos necessários usando a CLI (interface de linha de comando) do Azure.Create the necessary resources using the Azure Command Line Interface (CLI).
  • Crie funções localmente usando seu IDE favorito e publique-as no Azure.Build functions locally using your favorite IDE and publish them to Azure.

Para obter mais informações sobre como criar uma função com script no portal, consulte criar sua primeira função no portal do Azure.For more information on creating a scripted function in the portal, see Create your first function in the Azure portal.

Para criar a partir do CLI do Azure, consulte criar sua primeira função usando o CLI do Azure.To build from the Azure CLI, see Create your first function using the Azure CLI.

Para criar uma função do Visual Studio, consulte criar sua primeira função usando o Visual Studio.To create a function from Visual Studio, see Create your first function using Visual Studio.

Entender gatilhos e associaçõesUnderstand triggers and bindings

As funções são invocadas por um gatilho e podem ter exatamente uma.Functions are invoked by a trigger and can have exactly one. Além de invocar a função, determinados gatilhos também servem como associações.In addition to invoking the function, certain triggers also serve as bindings. Você também pode definir várias associações além do gatilho.You may also define multiple bindings in addition to the trigger. As associações fornecem uma maneira declarativa de conectar dados ao seu código.Bindings provide a declarative way to connect data to your code. Eles podem ser passados (entrada) ou receber dados (saída).They can be passed in (input) or receive data (output). Os gatilhos e as associações facilitam o trabalho com as funções.Triggers and bindings make functions easy to work with. As associações removem a sobrecarga de criar manualmente as conexões do banco de dados ou do sistema de arquivos.Bindings remove the overhead of manually creating database or file system connections. Todas as informações necessárias para as associações estão contidas em um arquivo functions. JSON especial para scripts ou declarados com atributos no código.All of the information needed for the bindings is contained in a special functions.json file for scripts or declared with attributes in code.

Alguns gatilhos comuns incluem:Some common triggers include:

  • Armazenamento de BLOBs: invoque sua função quando um arquivo ou pasta for carregado ou alterado no armazenamento.Blob Storage: invoke your function when a file or folder is uploaded or changed in storage.
  • HTTP: invoque sua função como uma API REST.HTTP: invoke your function like a REST API.
  • Fila: invoque sua função quando houver itens em uma fila.Queue: invoke your function when items exist in a queue.
  • Temporizador: invocar sua função em uma cadência regular.Timer: invoke your function on a regular cadence.

Exemplos de associações incluem:Examples of bindings include:

  • CosmosDB: Conecte-se facilmente ao banco de dados para carregar ou salvar arquivos.CosmosDB: easily connect to the database to load or save files.
  • Armazenamento de tabelas: trabalhe com o armazenamento de chave/valor do seu aplicativo de funções.Table Storage: work with key/value storage from your function app.
  • Armazenamento de filas: recuperar facilmente itens de uma fila ou colocar novos itens na fila.Queue Storage: easily retrieve items from a queue, or place new items on the queue.

O arquivo functions. JSON de exemplo a seguir define um gatilho e uma associação:The following example functions.json file defines a trigger and a binding:

{
  "bindings": [
    {
      "name": "myBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "images/{name}",
      "connection": "AzureWebJobsStorage"
    },
    {
      "name": "$return",
      "type": "queue",
      "direction": "out",
      "queueName": "images",
      "connection": "AzureWebJobsStorage"
    }
  ],
  "disabled": false
}

Neste exemplo, a função é disparada por uma alteração no armazenamento de BLOBs no contêiner de images.In this example, the function is triggered by a change to blob storage in the images container. As informações para o arquivo são passadas para que o gatilho também atue como uma associação.The information for the file is passed in, so the trigger also acts as a binding. Existe outra associação para colocar informações em uma fila chamada images.Another binding exists to put information onto a queue named images.

Este é o C# script para a função:Here is the C# script for the function:

public static string Run(Stream myBlob, string name, TraceWriter log)
{
    log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
    return name;
}

O exemplo é uma função simples que usa o nome do arquivo que foi modificado ou carregado no armazenamento de BLOBs e o coloca em uma fila para processamento posterior.The example is a simple function that takes the name of the file that was modified or uploaded to blob storage, and places it on a queue for later processing.

Para obter uma lista completa de gatilhos e associações, consulte Azure Functions os conceitos de gatilhos e associações.For a full list of triggers and bindings, see Azure Functions triggers and bindings concepts.

ProxiesProxies

Os proxies fornecem funcionalidade de redirecionamento para seu aplicativo.Proxies provide redirect functionality for your application. Os proxies expõem um ponto de extremidade e mapeiam esse ponto de extremidade para outro recurso.Proxies expose an endpoint and map that endpoint to another resource. Com proxies, você pode:With proxies, you can:

  • Redirecionar uma solicitação de entrada para outro ponto de extremidade.Reroute an incoming request to another endpoint.
  • Modifique a solicitação de entrada antes de ela ser passada.Modify the incoming request before it's passed along.
  • Modifique ou forneça uma resposta.Modify or provide a response.

Os proxies são usados para cenários como:Proxies are used for scenarios such as:

  • Simplificando, reduzindo ou alterando a URL.Simplifying, shortening, or changing the URL.
  • Fornecer um prefixo de API consistente para vários serviços de back-end.Providing a consistent API prefix to multiple back-end services.
  • Simulação de uma resposta a um ponto de extremidade que está sendo desenvolvido.Mocking a response to an endpoint being developed.
  • Fornecer uma resposta estática para um ponto de extremidade bem conhecido.Providing a static response to a well-known endpoint.
  • Manter um ponto de extremidade de API consistente enquanto o back-end é movido ou migrado.Keeping an API endpoint consistent while the back end is moved or migrated.

Os proxies são armazenados como definições de JSON.Proxies are stored as JSON definitions. Veja um exemplo:Here is an example:

{
  "$schema": "http://json.schemastore.org/proxies",
  "proxies": {
    "Domain Redirect": {
      "matchCondition": {
        "route": "/{shortUrl}"
      },
      "backendUri": "http://%WEBSITE_HOSTNAME%/api/UrlRedirect/{shortUrl}"
    },
    "Root": {
      "matchCondition": {
        "route": "/"
      },
      "responseOverrides": {
        "response.statusCode": "301",
        "response.statusReason": "Moved Permanently",
        "response.headers.location": "https://docs.microsoft.com/"
      }
    }
  }
}

O proxy de Domain Redirect usa uma rota reduzida e a mapeia para o recurso de função mais longo.The Domain Redirect proxy takes a shortened route and maps it to the longer function resource. A transformação é semelhante a:The transformation looks like:

https://--shorturl--/123 -> https://--longurl--.azurewebsites.net/api/UrlRedirect/123

O proxy de Root faz algo enviado para a URL raiz (https://--shorturl--/) e o redireciona para o site de documentação.The Root proxy takes anything sent to the root URL (https://--shorturl--/) and redirects it to the documentation site.

Um exemplo de uso de proxies é mostrado no vídeo Azure: Traga seu aplicativo para a nuvem com Azure Functions sem servidor.An example of using proxies is shown in the video Azure: Bring your app to the cloud with serverless Azure Functions. Em tempo real, um aplicativo ASP.NET Core em execução no SQL Server local é migrado para a nuvem do Azure.In real time, an ASP.NET Core application running on local SQL Server is migrated to the Azure Cloud. Os proxies são usados para ajudar a refatorar um projeto de API Web tradicional para usar funções.Proxies are used to help refactor a traditional Web API project to use functions.

Para obter mais informações sobre proxies, consulte trabalhar com proxies do Azure Functions.For more information about Proxies, see Work with Azure Functions Proxies.