다음을 통해 공유


.NET Aspire Azure 함수 통합 기능 (미리 보기)

포함:호스팅 통합 포함 호스팅 통합만 포함 - Client 통합이 포함되지 않음Client 통합이 포함되지 않음

중요하다

.NET Aspire Azure Functions 통합은 현재 미리 보기로 제공되며 변경될 수 있습니다.

Azure Functions 코드를 적게 작성하고, 인프라를 적게 유지하고, 비용을 절감할 수 있는 서버리스 솔루션입니다. .NET Aspire Azure Functions 통합을 사용하면 AppHost의 일부로 Functions .NET 프로젝트를 개발, 디버그 및 오케스트레이션 Azure 할 수 있습니다.

필요한 Azure 도구를 설치한 것으로 예상됩니다.

지원되는 시나리오

.NET Aspire Azure Functions 통합에는 지원되는 몇 가지 주요 시나리오가 있습니다. 이 섹션에서는 시나리오를 간략하게 설명하고 각 방법의 구현과 관련된 세부 정보를 제공합니다.

지원되는 트리거

다음 표에서는 Azure 통합에서 .NET Aspire Functions에 대해 지원되는 트리거를 나열합니다.

트리거 속성 세부 정보
Azure Event Hubs 트리거 EventHubTrigger 📦 Aspire. 호스팅.Azure. EventHubs
Azure Service Bus 트리거 ServiceBusTrigger 📦 Aspire. 호스팅.Azure. ServiceBus
Azure 블록 저장소 트리거 BlobTrigger 📦 Aspire. 호스팅.Azure. 스토리지
Azure Storage Queues 트리거 QueueTrigger 📦 Aspire. 호스팅.Azure. 스토리지
Azure CosmosDB 트리거 CosmosDbTrigger 📦 Aspire. Azure호스팅. CosmosDB
HTTP 트리거 HttpTrigger 추가 리소스 종속성 없이 지원합니다.
타이머 트리거 TimerTrigger 추가 리소스 종속성 없이 지원되며 암시적 호스트 스토리지에 의존합니다.

중요하다

다른 Azure Functions 트리거 및 바인딩은 현재 .NET AspireAzure Functions 통합에서 지원되지 않습니다.

전개

현재 배포는 Azure Container Apps의 SDK 컨테이너 게시 함수를 사용하여 ACA(Microsoft.Azure.Functions.Worker.Sdk)의 컨테이너에만 가능합니다. 이 배포 방법론은 현재 KEDA 기반 자동 크기 조정을 지원하지 않습니다.

외부 HTTP 엔드포인트 구성

HTTP 트리거에 공개적으로 액세스할 수 있도록 하려면 WithExternalHttpEndpointsAzureFunctionsProjectResource API를 호출합니다. 자세한 내용은 Azure Functions 리소스추가를 참조하세요.

Azure 함수 프로젝트 제약 조건

.NET Aspire Azure Functions 통합에는 다음과 같은 프로젝트 제약 조건이 있습니다.

다음과 같이 Azure Functions 프로젝트에 문제가 발생하는 경우:

프로젝트에 지정된 버전과 일치하는 함수 런타임을 사용할 수 없습니다.

Visual Studio에서 Azure Functions 도구의 업데이트를 시도해 보세요. 옵션 대화 상자를 열고 프로젝트 및 솔루션이동한 다음 Azure 함수선택합니다. 업데이트 확인 단추를 선택하여 최신 버전의 Azure Functions 도구가 있는지 확인합니다.

Visual Studio: 옵션 / 프로젝트 및 솔루션 / Azure 함수.

호스팅 통합

통합을 호스팅하는 Azure Functions는 Azure Functions 리소스를 AzureFunctionsProjectResource(ProjectResource하위 형식) 형식으로 모델화합니다. AppHost 프로젝트에 추가할 수 있는 이 형식 및 API에 액세스하려면 다음을 설치합니다📦Aspire. Azure호스팅. Functions NuGet 패키지입니다.

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

자세한 내용은 dotnet add package 또는 manage package dependencies in .NET applications.

Azure Functions 리소스 추가

AppHost 프로젝트에서 인스턴스를 builder 호출 AddAzureFunctionsProject 하여 Functions 리소스를 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...

이전 예제 functions 와 Azure 같이 Functions 프로젝트 리소스를 AppHost에 추가하는 경우 .NET Aspire 다른 프로젝트 리소스에서 리소스를 참조할 수 있습니다. WithReference 메서드는 ExampleProject에 있는 "functions"라는 연결을 구성합니다. Azure 리소스가 배포되었고 HTTP 트리거가 노출된 경우, WithExternalHttpEndpoints호출로 인해 해당 엔드포인트는 외부에 있게 됩니다. 자세한 내용은 참조 리소스참조하세요.

호스트 스토리지를 사용하여 Azure Functions 리소스 추가

Azure Functions 호스트에서 사용하는 기본 호스트 스토리지 계정을 수정하려면 WithHostStorage Functions 프로젝트 리소스에서 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 리소스를 추가합니다. 그런 다음 storage 리소스가 WithHostStorage API에 전달되어 호스트 스토리지를 에뮬레이트된 리소스로 명시적으로 설정합니다.

메모

암시적 호스트 스토리지를 사용하지 않는 경우 배포된 인스턴스의 리소스에 StorageAccountContributor 역할을 수동으로 할당해야 합니다. 이 역할은 암시적으로 생성된 호스트 스토리지에 대해 자동으로 할당됩니다.

Azure Functions의 참조 리소스

다른 Azure 리소스를 Azure Functions 프로젝트에서 참조하려면, WithReference Functions 프로젝트 리소스에 대한 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 코드는 Storage 리소스를 AppHost에 추가하고 Functions 프로젝트에서 참조합니다 Azure . blobs 리소스는 storage 리소스에 추가된 다음 functions 리소스에서 참조됩니다. blobs 리소스에 연결하는 데 필요한 연결 정보는 Azure Functions 프로젝트에 자동으로 삽입됩니다. 이로 인해 프로젝트에서 BlobTrigger 리소스에 의존하는 blobs를 정의할 수 있습니다.

참고 항목