Compartilhar via


integração do .NET AspireAzure Functions (versão prévia)

Inclui:integração de hospedagem não Client de integração

Importante

A integração do .NET AspireAzure Functions está atualmente em versão prévia e está sujeita a alterações.

Azure Functions é uma solução sem servidor que permite escrever menos código, manter menos infraestrutura e economizar custos. A integração do .NET AspireAzure Functions permite desenvolver, debugar e orquestrar um projeto Azure Functions .NET como parte do host do aplicativo.

Espera-se que você tenha instalado as ferramentas de Azure necessárias:

Cenários com suporte

A integração do .NET AspireAzure Functions possui vários cenários importantes com suporte. Esta seção descreve os cenários e fornece detalhes relacionados à implementação de cada abordagem.

Gatilhos com suporte

A tabela a seguir lista os gatilhos compatíveis para o Azure Functions na integração .NET Aspire.

Gatilho Atributo Detalhes
gatilho Azure Event Hubs EventHubTrigger 📦 Aspire. Hospedagem.Azure. EventHubs
gatilho Azure Service Bus ServiceBusTrigger 📦 Aspire. Hospedagem.Azure. ServiceBus
Gatilho para Blobs de Armazenamento Azure BlobTrigger 📦 Aspire. Hospedagem.Azure. Armazenamento
gatilho Azure Storage Queues QueueTrigger 📦 Aspire. Hospedagem.Azure. Armazenamento
Gatilho HTTP HttpTrigger Com suporte sem dependências de recursos adicionais.
Gatilho do temporizador TimerTrigger Com suporte sem dependências de recursos adicionais, depende do armazenamento de host implícito.

Importante

Atualmente, não há suporte para outros gatilhos e associações do Azure Functions na integração do .NET AspireAzure Functions.

Implantação

Atualmente, a implantação tem suporte apenas para contêineres no Azure Container Apps (ACA) usando a função de publicação de contêiner do SDK no Microsoft.Azure.Functions.Worker.Sdk. Atualmente, essa metodologia de implantação não dá suporte ao dimensionamento automático baseado em KEDA.

Configurar pontos de extremidade HTTP externos

Para tornar os gatilhos HTTP acessíveis publicamente, chame a API WithExternalHttpEndpoints no AzureFunctionsProjectResource. Para obter mais informações, consulte Adicionarde recursos do Azure Functions.

Restrições do projeto da função Azure

A integração do .NET AspireAzure Functions tem as seguintes restrições de projeto:

Se você encontrar problemas com o projeto Azure Functions, como:

Não há nenhum runtime do Functions disponível que corresponda à versão especificada no projeto

Em Visual Studio, tente verificar se há uma atualização nas ferramentas do Azure Functions. Abra a caixa de diálogo Opções, navegue até Projetos e Soluçõese selecione Azure Funções. Selecione o botão Verificar se há atualizações para garantir que você tenha a versão mais recente das ferramentas do Azure Functions:

Visual Studio: Opções/Projetos e Soluções/Funções de Azure.

Integração de hospedagem

O Azure Functions que hospeda modelos de integração um recurso do Azure Functions como o tipo AzureFunctionsProjectResource (subtipo de ProjectResource). Para acessar este tipo e as APIs que permitem adicioná-lo ao projeto de host de aplicativo , instale o pacote NuGet 📦Aspire.Hosting.Azure.Functions.

dotnet add package Aspire.Hosting.Azure.Functions --prerelease

Para obter mais informações, consulte dotnet add package ou Gerenciar dependências de pacotes em .NET aplicações.

Adicionar recurso do Azure Functions

No projeto de host do aplicativo, chame AddAzureFunctionsProject na instância builder para adicionar um recurso do Azure Functions:

var builder = DistributedApplication.CreateBuilder(args);

var functions = builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
                       .WithExternalHttpEndpoints();

builder.AddProject<Projects.ExampleProject>()
       .WithReference(functions)
       .WaitFor(functions);

// After adding all resources, run the app...

Quando .NET Aspire adiciona um recurso de projeto do Azure Functions ao host do aplicativo, conforme mostrado no exemplo anterior, o recurso functions pode ser referenciado por outros recursos do projeto. O método WithReference configura uma conexão no ExampleProject denominado "functions". Se o recurso Azure foi implantado e expôs um gatilho HTTP, seu ponto de extremidade seria externo devido à chamada para WithExternalHttpEndpoints. Para obter mais informações, consulte Recursos de referência.

Adicionar o recurso Functions Azure com armazenamento de host

Se você quiser modificar a conta de armazenamento de host padrão que o host do Azure Functions usa, chame o método WithHostStorage no recurso de projeto do Azure Functions:

var builder = DistributedApplication.CreateBuilder(args);

var storage = builder.AddAzureStorage("storage")
                     .RunAsEmulator();

var functions = builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
                       .WithHostStorage(storage);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(functions)
       .WaitFor(functions);

// After adding all resources, run the app...

O código anterior depende do pacote NuGet 📦Aspire.Hosting.Azure.Storage para adicionar um recurso de armazenamento Azure que é executado como um emulador. O recurso storage é passado para a API de WithHostStorage, definindo explicitamente o armazenamento do host como o recurso emulado.

Nota

Se você não estiver usando o armazenamento de host implícito, deverá atribuir manualmente a atribuição StorageAccountContributor ao seu recurso para as instâncias implantadas. Essa função é atribuída automaticamente para o armazenamento de host gerado implicitamente.

Recursos de referência no Azure Functions

Para fazer referência a outros recursos Azure em um projeto do Azure Functions, encadeie uma chamada para WithReference no recurso de projeto do Azure Functions e forneça o recurso para referência:

var builder = DistributedApplication.CreateBuilder(args);

var storage = builder.AddAzureStorage("storage").RunAsEmulator();
var blobs = storage.AddBlobs("blobs");

builder.AddAzureFunctionsProject<Projects.ExampleFunctions>("functions")
       .WithHostStorage(storage)
       .WithReference(blobs);

builder.Build().Run();

O código anterior adiciona um recurso de Armazenamento Azure ao host do aplicativo e faz referência a ele no projeto Azure Functions. O recurso blobs é adicionado ao recurso storage e referenciado pelo recurso functions. As informações de conexão necessárias para se conectar ao recurso blobs são injetadas automaticamente no projeto Functions Azure e permitem que o projeto defina um BlobTrigger que dependa do recurso blobs.

Consulte também