интеграция функций .NET AspireAzure (предварительная версия)
Включает:интеграция размещения не
Client интеграция
Важный
Интеграция функций .NET AspireAzure в настоящее время находится в предварительной версии и подлежит изменению.
Azure Функции — это бессерверное решение, позволяющее писать меньше кода, поддерживать меньше инфраструктуры и экономить на затратах. Интеграция функций .NET AspireAzure позволяет вам разрабатывать, отлаживать и оркестрировать проект функций Azure.NET в рамках узла приложения.
Ожидается, что вы установили необходимые средства Azure:
- установите основных средств функций Azure
Поддерживаемые сценарии
Интеграция функций .NET AspireAzure имеет несколько ключевых поддерживаемых сценариев. В этом разделе описываются сценарии и приводятся подробные сведения, связанные с реализацией каждого подхода.
Поддерживаемые триггеры
В следующей таблице перечислены поддерживаемые триггеры для функций Azure в интеграции .NET Aspire:
Триггер | Атрибут | Подробности |
---|---|---|
триггер Azure Event Hubs | EventHubTrigger |
📦 Aspire. Хостинг.Azure. EventHubs |
триггер Azure Service Bus | ServiceBusTrigger |
📦 Aspire. Хостинг.Azure. ServiceBus |
триггер больших двоичных объектов хранилища Azure | BlobTrigger |
📦 Aspire.Хостинг.Azure.Хранение |
триггер Azure Storage Queues | QueueTrigger |
📦 Aspire. Хостинг.Azure. хранилища |
Триггер HTTP | HttpTrigger |
Поддерживается без дополнительных зависимостей от ресурсов. |
Триггер таймера | TimerTrigger |
Поддерживается без дополнительных зависимостей ресурсов — использует неявное хранилище хоста. |
Важный
Другие триггеры и привязки функций Azure в настоящее время не поддерживаются в интеграции с функциями .NET AspireAzure.
Развёртывание
В настоящее время развертывание поддерживается только для контейнеров в Azure Container Apps (ACA) с помощью функции публикации контейнера SDK в Microsoft.Azure.Functions.Worker.Sdk
. Эта методология развертывания в настоящее время не поддерживает автомасштабирование на основе KEDA.
Настройка внешних конечных точек HTTP
Чтобы сделать триггеры HTTP общедоступными, вызовите API WithExternalHttpEndpoints в AzureFunctionsProjectResource. Дополнительные сведения см. в разделе Добавление ресурса функций Azure.
ограничения проекта функции Azure
Интеграция функций .NET AspireAzure имеет следующие ограничения проекта:
- Необходимо использовать .NET версии 8.0 или более поздней.
- Необходимо использовать пакет SDK .NET 9.
- В настоящее время она поддерживает только .NET работников с моделью изолированного рабочего.
- Требуется следующие пакеты NuGet:
-
📦 Майкрософт.Azure. Functions.Worker: используйте
FunctionsApplicationBuilder
. -
📦 Майкрософт.Azure.Functions.Worker.Sdk: добавляет поддержку
dotnet run
иazd publish
. - 📦 Майкрософт.Azure. Functions.Http.AspNetCore: добавляет API-интерфейсы, поддерживающие триггер HTTP.
-
📦 Майкрософт.Azure. Functions.Worker: используйте
При возникновении проблем с проектом функций Azure, например:
Нет среды выполнения Функций, которая соответствует версии, указанной в проекте
В Visual Studioпопробуйте проверить наличие обновления в средстве функций Azure. Откройте диалоговое окно параметров, перейдите к проектам и решениям, а затем выберите функцииAzure. Нажмите кнопку Проверить наличие обновлений, чтобы убедиться, что у вас есть последняя версия инструментов Azure Функций:
Интеграция хостинга
Интеграция функций Azure моделирует ресурс Azure как тип AzureFunctionsProjectResource (подтип ProjectResource). Чтобы получить доступ к этому типу и API, которые позволяют добавить его в хост приложения в проекте, установите пакет NuGet 📦Aspire.Hosting.Azure.Functions.
dotnet add package Aspire.Hosting.Azure.Functions --prerelease
Дополнительные сведения см. в статьях dotnet add package или Управление зависимостями пакетов в приложениях .NET.
Добавить ресурс функций Azure
В проекте узла приложения вызовите AddAzureFunctionsProject в экземпляре builder
, чтобы добавить ресурс функций Azure:
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...
Когда .NET Aspire добавляет ресурс проекта Azure Functions на узел приложения, как показано в предыдущем примере, на ресурс functions
могут ссылаться другие ресурсы проекта. Метод WithReference настраивает подключение в ExampleProject
с именем "functions"
. Если Azure Ресурс был развернут и он предоставил триггер HTTP, его конечная точка будет внешней в результате вызова WithExternalHttpEndpoints. Дополнительные сведения см. в справочных ресурсах .
Добавить ресурс функций Azure с хостовым хранилищем
Если вы хотите изменить учетную запись хранения узла по умолчанию, которую использует узел функций Azure, вызовите метод WithHostStorage в ресурсе проекта функций Azure:
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...
Предыдущий код зависит от 📦Aspire.Hosting.Azure.Storage пакета NuGet для добавления ресурса Azure для хранилища, который работает как эмулятор. Затем ресурс storage
передается в API WithHostStorage
, явно задав хранилище для узла на эмулированный ресурс.
Заметка
Если вы не используете неявное хранилище хоста, вам необходимо вручную присвоить роль StorageAccountContributor
вашему ресурсу для развернутых экземпляров. Эта роль автоматически назначается для автоматически создаваемого хостового хранилища.
Справочные ресурсы в функциях Azure
Чтобы ссылаться на другие ресурсы Azure в проекте функций Azure, выполните цепочку вызовов WithReference
в ресурсе проекта функций Azure и укажите ресурс для ссылки:
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();
Указанный выше код добавляет ресурс хранилища Azure в хост приложения и ссылается на него в проекте функций Azure. Ресурс blobs
добавляется в ресурс storage
, а затем ссылается на ресурс functions
. Сведения о подключении, необходимые для подключения к ресурсу blobs
, автоматически внедряются в проект функций Azure и позволяют проекту определить BlobTrigger
, которая зависит от ресурса blobs
.
См. также
- интеграции .NET.NET Aspire
- .NET Aspire GitHub репозитория
- Azure документация функций
- пример галереи изображений .NET.NET Aspire и функций
.NET Aspire