.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:
- Deve ter como alvo .NET 8.0 ou posterior.
- Você deve usar um SDK .NET 9.
- Atualmente, apenas apoia .NET trabalhadores utilizando o modelo de trabalhador 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 a gatilho HTTP.
-
📦 Microsoft.Azure. Functions.Worker: Use o
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:
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.
- .NET CLI
- PackageReference
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
- .NET .NET Aspire integrações
- .NET Aspire GitHub repo
- Azure Documentação de funções
- Galeria de exemplos de imagens .NET.NET Aspire e Funções