次の方法で共有


.NET Aspire Azure Functions の統合 (プレビュー)

含まれるもの:ホスティング統合 ではなく Client 統合 は含まれません

大事な

.NET Aspire Azure Functions の統合は現在プレビュー段階であり、変更される可能性があります。

Azure Functions は、より少ないコードを記述し、インフラストラクチャを維持し、コストを節約できるサーバーレス ソリューションです。 .NET Aspire Azure Functions 統合を使用すると、アプリ ホストの一部として Azure Functions .NET プロジェクトを開発、デバッグ、調整できます。

必要な Azure ツールがインストールされている必要があります。

  • .NET を使用した Azure 開発の Visual Studio Code の構成

サポートされているシナリオ

.NET Aspire Azure Functions の統合には、いくつかの主要なシナリオがサポートされています。 このセクションでは、シナリオの概要を説明し、各アプローチの実装に関連する詳細を示します。

サポートされているトリガー

次の表に、.NET Aspire 統合の Azure Functions でサポートされているトリガーを示します。

トリガー 属性 細部
Azure Event Hubs トリガー EventHubTrigger 📦 Aspire.ホスティング。Azure.EventHubs
Azure Service Bus トリガー ServiceBusTrigger 📦 Aspire.ホスティング。Azure.ServiceBus
Azure ストレージblob トリガー BlobTrigger 📦 Aspire.ホスティング。Azure.ストレージ
Azure Storage Queues トリガー QueueTrigger 📦 Aspire.ホスティング。Azure.ストレージ
HTTP トリガー HttpTrigger 追加のリソース依存関係なしでサポートされます。
タイマーの発動 TimerTrigger 追加のリソース依存関係なしでサポートされます。暗黙的なホスト ストレージに依存します。

重要

.NET Aspire Azure Functions 統合では、他の Azure Functions のトリガーとバインドは現在サポートされていません。

配備

現在、デプロイは、Microsoft.Azure.Functions.Worker.Sdkの SDK コンテナー発行関数を使用して、Azure Container Apps (ACA) 上のコンテナーに対してのみサポートされています。 このデプロイ手法では、現在、KEDA ベースの自動スケールはサポートされていません。

外部 HTTP エンドポイントを構成する

HTTP トリガーにパブリックにアクセスできるようにするには、AzureFunctionsProjectResourceWithExternalHttpEndpoints API を呼び出します。 詳細については、「Azure Functions リソースの追加」を参照してください。

Azure 関数プロジェクトの制約

.NET Aspire Azure Functions 統合には、次のプロジェクト制約があります。

Azure Functions プロジェクトで次のような問題が発生した場合:

プロジェクトで指定されたバージョンに一致する Functions ランタイムは使用できません

Visual Studioで、Azure Functions ツールの更新プログラムを確認してみてください。 [オプション] ダイアログ ボックスを開き、[プロジェクトとソリューション]に移動し、[ Functions] を選択します。 [更新プログラムの確認] ボタンを選択して、Azure Functions ツールの最新バージョンがあることを確認します。

Visual Studio: オプション/プロジェクトとソリューション/Azure 関数。

ホスティング統合

Azure Functions ホスティング統合は、Azure Functions リソースを AzureFunctionsProjectResource (ProjectResourceのサブタイプ) 型としてモデル化します。 この型と API にアクセスするには、それを アプリ ホスト プロジェクトに追加するための 📦Aspire.Hosting.Azure.Functions NuGet パッケージをインストールしてください。

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

詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。

Azure Functions リソースの追加

アプリ ホスト プロジェクトで、builder インスタンスの AddAzureFunctionsProject を呼び出して、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...

前 .NET Aspire 例に示すように、Azure Functions プロジェクト リソースをアプリ ホストに追加すると、functions リソースは他のプロジェクト リソースから参照できます。 WithReference メソッドは、"functions"という名前の ExampleProject で接続を構成します。 Azure リソースがデプロイされ、HTTP トリガーが公開された場合、WithExternalHttpEndpointsの呼び出しにより、そのエンドポイントは外部になります。 詳細については、「参照リソースの」を参照してください。

Azure Functions リソースをホスト ストレージで追加する

Azure Functions ホストが使用する既定のホスト ストレージ アカウントを変更する場合は、Azure Functions プロジェクト リソースで WithHostStorage メソッドを呼び出します。

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...

上記のコードは、📦AspireAzure.Storage NuGet パッケージに依存しており、これを使用して、エミュレーターとして実行される Azure Storage リソースを追加します。 その後、storage リソースが WithHostStorage API に渡され、ホスト ストレージがエミュレートされたリソースに明示的に設定されます。

手記

暗黙的なホスト ストレージを使用していない場合は、デプロイされたインスタンスのリソースに StorageAccountContributor ロールを手動で割り当てる必要があります。 このロールは、暗黙的に生成されたホスト ストレージに対して自動的に割り当てられます。

Azure 関数のリソースを参照する

Azure Functions プロジェクト内の他の Azure リソースを参照するには、Azure Functions プロジェクト リソースに対する WithReference の呼び出しをチェーンし、参照するリソースを指定します。

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 リソースをアプリ ホストに追加し、Azure Functions プロジェクトで参照します。 blobs リソースが storage リソースに追加され、functions リソースによって参照されます。 blobs リソースに接続するために必要な接続情報は、Azure Functions プロジェクトに自動的に挿入され、blobs リソースに依存する BlobTrigger をプロジェクトで定義できます。

関連項目