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:
- Você deve ter como alvo .NET 8.0 ou posterior.
- Você deve usar um SDK .NET 9.
- Atualmente, ele só dá suporte a .NET trabalhadores com o modelo de trabalho isolado .
- Requer os seguintes pacotes NuGet:
-
📦 Microsoft.Azure. Functions.Worker: use o
FunctionsApplicationBuilder
. -
📦 Microsoft.Azure.Functions.Worker.Sdk: adiciona suporte para
dotnet run
eazd publish
. - 📦 Microsoft.Azure. Functions.Http.AspNetCore: adiciona APIs de suporte para gatilhos HTTP.
-
📦 Microsoft.Azure. Functions.Worker: use o
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:
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
- .NET .NET Aspire integrações
- .NET Aspire GitHub repositório
- documentação das funções Azure
- exemplo da galeria de imagens .NET.NET Aspire e do Functions