Partilhar via


.NET Aspire Azure Integração de funções (Pré-visualização)

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

Importante

A integração das funções .NET AspireeAzure está atualmente em pré-visualização 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, depurar e orquestrar um projeto Azure Functions .NET como parte do hospedeiro da aplicação.

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

Cenários suportados

A integração das .NET AspireAzure Functions é suportada em vários cenários principais. Esta seção descreve os cenários e fornece detalhes relacionados à implementação de cada abordagem.

Gatilhos suportados

A tabela a seguir lista os gatilhos suportados na integração .NET Aspire para as funções Azure:

Gatilho Atributo Detalhes
Azure Event Hubs gatilho EventHubTrigger 📦 Aspire. Hospedagem.Azure. EventHubs
Azure Service Bus gatilho ServiceBusTrigger 📦 Aspire. Hospedagem.Azure. ServiceBus
Azure Acionador de blobs de armazenamento BlobTrigger 📦 Aspire. Hospedagem.Azure. Armazenamento
Azure Storage Queues gatilho QueueTrigger 📦 Aspire. Hospedagem.Azure. Armazenamento
Gatilho HTTP HttpTrigger Suportado sem quaisquer dependências de recursos adicionais.
Gatilho do temporizador TimerTrigger Suportado sem dependências adicionais de recursos — baseia-se no armazenamento implícito do host.

Importante

Atualmente, gatilhos e ligações de outras funções do Azure não são suportados na integração das funções .NET AspireAzure.

Implantação

Atualmente, a implantação é suportada apenas para contentores em Azure Container Apps (ACA) usando a função de publicação do SDK no Microsoft.Azure.Functions.Worker.Sdk. Atualmente, essa metodologia de implantação não oferece 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 o recurso de funções "Adicionar" Azure.

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

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 tempo de execução do Functions disponível que corresponda à versão especificada no projeto

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

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

Integração de hospedagem

A integração de hospedagem do Azure Functions modela um recurso Azure Functions como o tipo AzureFunctionsProjectResource (subtipo de ProjectResource). Para aceder a este tipo e às APIs que permitem adicioná-lo ao host da aplicação projeto, instale o pacote do NuGet 📦Aspire.Hosting.Azure.Functions.

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

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

Adicionar o recurso Azure Funções

Em seu projeto de host de aplicativo, chame AddAzureFunctionsProject na instância builder para adicionar um recurso 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 Azure Functions ao host do aplicativo, como 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 chamado "functions". Se o Azure Resource fosse implantado e expusesse um gatilho HTTP, seu endpoint seria externo devido à chamada para WithExternalHttpEndpoints. Para obter mais informações, consulte Recursos de referência.

Adicionar recurso Azure Functions 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 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 funciona como um emulador. O recurso storage é então passado para a API WithHostStorage, definindo explicitamente o armazenamento do host para o recurso emulado.

Observação

Se você não estiver usando o armazenamento de host implícito, deverá atribuir manualmente a função StorageAccountContributor ao seu recurso para 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 de 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 de Azure ao host do aplicativo e faz referência a ele no projeto Azure Functions. O recurso blobs é adicionado ao recurso storage e, em seguida, referenciado pelo recurso functions. A informação de conexão necessária para se conectar ao recurso blobs é automaticamente injetada no projeto Azure Functions e permite que o projeto defina um BlobTrigger que depende do recurso blobs.

Ver também