.NET Aspire Azure Functions の統合 (プレビュー) – .NET Aspire | Microsoft Learn
2024/12/16
https://learn.microsoft.com/ja-jp/dotnet/aspire/serverless/functions?tabs=dotnet-cli&pivots=visual-studio
Visual Studio 2022 プロジェクトテンプレート からはじめます。
1. Azure Functions のプロジェクトをVisual Studio 2022でつくってみます。
・17.13.6 にしていなかったPCがあったのでまず
Visual Studio 2022 Professional 2022 17.13.5
“.NET 9 を選んで作る必要がある” このあたりはノーチェックです。
.NET Aspire SDK もいれてません。(いれた覚えがありません)
ワークロードでポチっと選んでインストールしただけの状態です。


”さらに今回は .NET Aspire の機能も使いたいと思っているので .NET Aspire オーケストレーションへの参加 (プレビュー) をオンにしました。”
【予想】
ここに .NET Aspire オーケストレーションへの参加 (プレビュー)
があるのでは?
.NET Aspire オーケストレーションへの参加 (プレビュー)
の気配が…
ありませんね。

ただこの時点ではテンプレートには
.NET 7.0 Isolated までしかありません。

だめじゃん
ちなみにWPFでは.NET 9.0 までOKですね。



.NET 9.0 SDK は入っていますね。

ワークロードから
インストールしただけの状態ですが

とりあえず、かわりはないと思いますが
先ずは、17.13.6に更新しました。(関係はないですが)
常用機ではないのですがまあ気がつくと入れてましたから。
ただこういう環境関係は
まっさらからやるとどういう手順で…
のはどんどん積んで行っているので、自分はもうわからないのですよね…
戻りますが、こういうときは…
テンプレートを更新で
Visual Studio – Functions テンプレートを更新 – ゆるめも
ということで
Azure Functionsのプロジェクトをテンプレートから作成

✅ .NET Aspire オーケストレーションへの参加 (プレビュー)
⬜ ランタイム ストレージ アカウントに Azurite を使用する (AzureWebJobsStorage)
⬜ コンテナーのサポートを有効にする
3つのオプション。チェックボックスがありますね。
1. .NET Aspire オーケストレーションへの参加 (プレビュー)
⬜.NET Aspire オーケストレーションへの参加 (プレビュー)
にチェックを入れてプロジェクトを作成すると
・Azure Functionsのプロジェクトに加えて
・App Host(Aspire.Hosting).ServiceDefaults
・Service Defaults .ServiceDefaults
が作成されるんですね。
これは.NET Aspire のプロジェクトテンプレートの
「.NET Aspire スターターアプリ」テンプレートでプロジェクトを作成したときと同じ様に
・App Host(Aspire.Hosting).ServiceDefaults
・Service Defaults .ServiceDefaults
も追加してくれるという感じですかね。
ちなみに「.NET Aspire スターターアプリ」テンプレートで作成した場合の本体側のアプリは
・AspireApp1.ApiService(Web API バックエンド)
・AspireApp1.Web(Blazor フロントエンド)
ですかね。
思考時間: 6 秒
以下では、Visual Studio 2022 の Azure Functions プロジェクト作成ウィザードに出てくる3つのオプションについて、それぞれの目的・効果と利用手順をまとめます。
Azure Functions プロジェクト作成時の「追加情報」画面で、以下のチェックボックスが表示されます。
- ⬜ .NET Aspire オーケストレーションへの参加 (プレビュー)
- ⬜ ランタイム ストレージ アカウントに Azurite を使用する (AzureWebJobsStorage)
- ⬜ コンテナーのサポートを有効にする
1. .NET Aspire オーケストレーションへの参加 (プレビュー)
概要
このオプションを有効にすると、新規 Azure Functions プロジェクトと同時に .NET Aspire の App Host と Service Defaults プロジェクトがソリューションに追加され、ローカル実行や複数サービスのオーケストレーションがシームレスに行えるようになります (Microsoft for Developers, マイクロソフトラーニング)。
主な効果
- App Host(Aspire.Hosting)と Service Defaults(共通ポリシー定義)が自動追加され、
dotnet run
や VS の F5 で Functions と他サービスを一括起動可能 (マイクロソフトラーニング)。 - IaC(Bicep/Terraform)の自動出力、Managed Identity 設定など Aspire の恩恵を受けられる。
利用手順
- Visual Studio 17.9 以降で Azure Functions プロジェクトを新規作成
- 「追加情報」画面で .NET Aspire オーケストレーションへの参加 (プレビュー) をチェック
- プロジェクトが作成されたら、
.sln
配下にMyApp.AppHost
とMyApp.ServiceDefaults
が生成されることを確認
2. ランタイム ストレージ アカウントに Azurite を使用する (AzureWebJobsStorage)
概要
Azure Functions のトリガーやバインディングは既定で AzureWebJobsStorage
接続文字列を参照します。このオプションを有効にすると、ローカル実行時にその接続先を Azurite (VS 上のストレージエミュレータ)に向けるよう local.settings.json
が設定されます (マイクロソフトラーニング, マイクロソフトラーニング)。
主な効果
AzureWebJobsStorage
が"UseDevelopmentStorage=true"
に設定され、Azurite(エミュレータ)を自動利用- 実機 Azure Storage を用いずにローカルだけで Blob/Queue/Table の動作検証が可能
利用手順
- 事前に Azurite をインストール・起動 (
npm install -g azurite
など) - プロジェクト作成時に ランタイム ストレージ アカウントに Azurite を使用する をチェック
- 生成される
local.settings.json
内に以下が含まれることを確認"Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", … }
3. コンテナーのサポートを有効にする
概要
このオプションを有効にすると、Visual Studio がプロジェクトルートに Dockerfile や .dockerignore を自動生成し、「Docker サポート付きプロジェクト」として初期設定します (マイクロソフトラーニング)。
主な効果
- Dockerfile がひな形で生成され、Linux/Windows ベースイメージの選択やビルド・実行手順が含まれる
- ソリューションエクスプローラーに Docker サポート アイコンが追加され、VS の Docker ツールパネルからビルド/デバッグ可能
利用手順
- Azure Functions プロジェクト作成時に コンテナーのサポートを有効にする をチェック
- 生成後、プロジェクト直下に
Dockerfile
と.dockerignore
が存在することを確認 - VS の コンテナー エクスプローラー でイメージビルド・実行まで行う
以上の3つのオプションを適切に使い分けることで、ローカル開発体験やデプロイパイプラインの構築が格段に向上します。お問い合わせや追加のご要望があれば、いつでもお知らせください!
Azure Functionsで作成する場合は
.NET Aspire のプロジェクトテンプレートからではなくて
Azure Functionsのテンプレートから作成という流れかと思います。
このとき
・.NET Aspire オーケストレーションへの参加 (プレビュー) ⇧
・.NET Orchestrator サポート ⬇
既存のプロジェクトに.NET Aspire を導入する場合は後者になりますかね。
2. .NET Orchestrator サポート
Azure Functios で普通にプロジェクトを作成・あるいは既存のプロジェクト

.NET Orchestrator サポート を追加から
(Azure Functions はプレビューですが共通機能なのでプレビュー表示は省かれているとChatGPTさんが言ってました)

2つのプロジェクトが追加されます。

どっちでもかずきさんのZenn記事へいけました。やったね!(はじめての.NET Aspire ?)
いろいろとChatGPTさん(4o, o3, o4-mini …)に聞いたので以下適当に貼っておきます。
思考時間: 2 ~ 3 秒
以下、Visual Studio 2022 を使った Azure Functions プロジェクトの ローカル実行 と Azure へのデプロイ 方法を、できるだけ網羅的にまとめます。
1. ローカルでの実行・デバッグ
方法 | 概要 | 手順・ポイント |
---|---|---|
① Visual Studio デバッグ (F5) | VS 上で最も手軽に実行・ブレークポイントデバッグが可能 | 1. ソリューション エクスプローラーで Functions プロジェクトを右クリック → デバッグ開始2. Azure Functions Core Tools が内部的に起動し、関数ランタイムとトリガーが動作3. HTTP トリガーなら http://localhost:7071/api/<FunctionName>?code=... にアクセス4. local.settings.json の "Values:AzureWebJobsStorage" が未設定なら、実際の Storage 接続文字列が必要 |
② Core Tools CLI (func start ) | コマンドラインから起動し、VS を使わずに実験的に動作確認できる | 1. プロジェクトルートでターミナルを開く2. func start 実行3. host.json /local.settings.json があるフォルダで起動することを確認4. 必要なら func extensions install でバインディング拡張を導入 |
③ Docker コンテナー | Dockerfile でビルドしたイメージをローカルで回して検証 | 1. コンテナーのサポートを有効にする で自動生成された Dockerfile を確認2. docker build -t myfunc . → docker run -p 7071:80 myfunc 3. VS の コンテナー エクスプローラー でビルド・デバッグも可 |
④ .NET Aspire オーケストレーション | 複数サービス (Functions+DB+キャッシュ…) を一括起動 | 1. テンプレート作成時に .NET Aspire オーケストレーションへの参加 をチェック2. dotnet run または VS の F5 で、AppHost/ServiceDefaults/Functions/他サービスを同時起動3. Aspire ダッシュボード (既定 http://localhost:5100) で全体のログ・トレースを確認 |
開発中の Storage エミュレータ
- Azurite を使う場合は、
local.settings.json
に"UseDevelopmentStorage=true"
を設定しておく- 実機の Storage 接続文字列を入れる場合は、Key Vault や環境変数で管理すると安全
2. Azure へのデプロイ
2.1 Visual Studio からの発行
- プロジェクトを右クリック → 発行 (Publish)…
- ターゲット で「Azure → Azure Functions」
- サブスクリプション・リソースグループを選択または新規作成
- ホスティングプラン (Consumption/Premium/Dedicated) を選択
- 発行 をクリックすると、ビルド→ZIP デプロイ→関数アプリ反映
- 発行完了後の 出力ウィンドウ に表示される URL へアクセスして動作確認
補足
- 本番用の
AzureWebJobsStorage
は アプリケーション設定 に格納- スロット(ステージング)発行も VS GUI から選択可能
2.2 コマンドライン / CLI
方法 | コマンド例 | 特徴 |
---|---|---|
Azure CLI + Core Tools | bash<br>az login<br>az group create -n rg-func -l japaneast<br>az storage account create …<br>func azure functionapp publish <app-name> --csharp<br> | ZIP デプロイ or 直接ビルド + デプロイ |
Zip Deploy (az webapp) | bash<br>zip -r deploy.zip *<br>az functionapp deployment source config-zip -g rg -n app --src deploy.zip<br> | 任意のビルド成果物を手動デプロイ |
Container Registry 経由 | bash<br>docker build -t myregistry.azurecr.io/myfunc:latest .<br>az acr login …<br>docker push myregistry.azurecr.io/myfunc:latest<br>az functionapp config container set -g rg -n app --docker-custom-image-name myregistry.azurecr.io/myfunc:latest<br> | カスタム コンテナ イメージで実行 (--docker-registry-server-user など認証設定) |
2.3 CI/CD(GitHub Actions / Azure DevOps)
- GitHub Actions
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: azure/functions-action@v1 with: app-name: ${{ secrets.FUNC_APP_NAME }} package: '.' - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }}
- Azure DevOps Pipelines
- Azure Functions App Deploy タスク or Azure CLI タスクで
func azure functionapp publish
- Azure Functions App Deploy タスク or Azure CLI タスクで
ポイント
azure/functions-action@v1
は ビルド + ZIP デプロイ を自動実行- Bicep や Terraform を組み合わせてインフラもコード化可能
3. その他のデプロイ手法
- ARM テンプレート / Bicep
az deployment group create -g rg -f template.bicep
で Function App リソース自動作成
- Terraform
azurerm_function_app
リソースで CI/CD パイプラインと組み合わせ
- Azure Static Web Apps
- HTTP トリガー付き Function をフロントエンド (Static Web App) の API としてホスティング
- Visual Studio Code
Azure Functions
拡張機能 → 「Deploy to Function App…」
まとめ
- ローカル実行 は VS の F5/
func start
/Docker/Aspire オーケストレーション など用途に応じて選択 - デプロイ は VS GUI/CLI/コンテナ/CI/CD とフェーズやチーム体制に合わせて柔軟に組み合わせ可能
- ストレージ設定 はローカルと本番で切り替え、Key Vault や環境変数管理を徹底
必要に応じて、もう少し深いサンプルコードやパイプライン定義もお手伝いできますので、お気軽にご依頼ください!
以上
コメントを残す