.NET Aspire Azure Functions の統合 (プレビュー)
含まれるもの:ホスティング統合 ではなく
Client 統合 は含まれません
大事な
.NET Aspire Azure Functions の統合は現在プレビュー段階であり、変更される可能性があります。
Azure Functions は、より少ないコードを記述し、インフラストラクチャを維持し、コストを節約できるサーバーレス ソリューションです。 .NET Aspire Azure Functions 統合を使用すると、アプリ ホストの一部として Azure Functions .NET プロジェクトを開発、デバッグ、調整できます。
必要な Azure ツールがインストールされている必要があります。
- の Visual Studio を .NET を使って Azure 開発用に構成する
- .NET を使用した Azure 開発の Visual Studio Code の構成
- Azure Functions Core Tools をインストールする
サポートされているシナリオ
.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 トリガーにパブリックにアクセスできるようにするには、AzureFunctionsProjectResourceで WithExternalHttpEndpoints API を呼び出します。 詳細については、「Azure Functions リソースの追加」を参照してください。
Azure 関数プロジェクトの制約
.NET Aspire Azure Functions 統合には、次のプロジェクト制約があります。
- .NET 8.0 以降をターゲットにする必要があります。
- .NET 9 SDK を使用する必要があります。
- 現在、の分離されたワーカー モデルを持つ .NET ワーカーのみがサポートされています。
- 次の NuGet パッケージが必要です。
-
📦 Microsoft.Azure.Functions.Worker:
FunctionsApplicationBuilder
を使用します。 -
📦 Microsoft。Azure.Functions.Worker.Sdk:
dotnet run
とazd publish
のサポートを追加します。 - 📦 Microsoft.Azure.Functions.Http.AspNetCore: HTTP トリガーをサポートする API を追加します。
-
📦 Microsoft.Azure.Functions.Worker:
Azure Functions プロジェクトで次のような問題が発生した場合:
プロジェクトで指定されたバージョンに一致する Functions ランタイムは使用できません
Visual Studioで、Azure Functions ツールの更新プログラムを確認してみてください。 [
ホスティング統合
Azure Functions ホスティング統合は、Azure Functions リソースを AzureFunctionsProjectResource (ProjectResourceのサブタイプ) 型としてモデル化します。 この型と API にアクセスするには、それを アプリ ホスト プロジェクトに追加するための 📦Aspire.Hosting.Azure.Functions NuGet パッケージをインストールしてください。
詳細については、「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
をプロジェクトで定義できます。
関連項目
.NET Aspire