Azure REST API更新:Container AppsのC# MPG migration変更点と確認ポイント

2026年5月20日にマージされた「Azure REST API documentation update: [ContainerApps] Add C# customizations for MPG migration」は、Azure Container Appsの本番アプリの動作を大きく変える更新というより、Azure.ResourceManager.AppContainers の管理SDKをTypeSpecベースへ移行するためのC#向け生成設定・命名・診断リソース形状の調整です。PRはAzure REST API仕様リポジトリの Microsoft.App/ContainerApps 配下に限定され、C#向けのSDK互換性を意識したカスタマイズが中心です。(GitHub)

管理者・開発者がまず確認すべきなのは、Azure Container Apps自体の再デプロイではありません。C# SDKでContainer Appsを管理しているコード、REST APIを直接呼ぶ自動化スクリプト、診断API・ジョブ・証明書・Private Endpoint周辺の管理処理、SDK生成パイプラインに影響がないかを確認することです。特にC#管理SDKを使っている場合は、メソッド名・モデル名・プロパティ名・ページング処理・診断リソースの扱いをテスト環境で検証してから展開してください。(GitHub)

目次

今回のAzure REST API documentation updateで何が変わるのか

今回の更新は、Azure Container Appsのランタイム機能追加ではなく、REST API仕様とSDK生成の整合性を高めるための変更です。Azure Container Appsはコンテナ化アプリケーションをサーバー構成やオーケストレーションの詳細を抑えて実行できるサーバーレス基盤で、API、バックグラウンド処理、イベント駆動処理、マイクロサービスなどに使われます。今回のPRは、その管理操作を扱う Microsoft.App のContainer Apps仕様に対して、C# SDK移行用のカスタマイズを追加しています。(Microsoft Learn)

変更点内容実務上の見方
C#管理SDK生成設定の追加@azure-typespec/http-client-csharp-mgmt のEmitter設定を追加C#管理SDKをTypeSpecから生成するための土台
C#スコープのカスタマイズ@@clientName@@alternateType@@markAsPageable などを追加C# SDKの型名・プロパティ名・ページング挙動の互換性確認が必要
診断リソース形状の更新diagnostic root、detector、job detectorなどのResourceNameや操作形状を調整診断APIやSDKの診断系リソースを使うコードは重点確認
APIレビュー命名修正ConnectionState、boolean/date/acronym名、resource/data名、page-wrapper名などを調整C#の公開API名に依存するコードはコンパイルテスト必須
スコープ限定PRは specification/app/resource-manager/Microsoft.App/ContainerApps/ 配下に限定他サービス全般のAzure REST API更新ではない

PRのSummaryでは、C# management emitter設定、Azure.ResourceManager.AppContainers のMPG migrationに必要なC#限定カスタマイズ、診断rootのモデル化、生成されるoperation/resource shapeの更新、C#向けAPIレビュー命名修正が明記されています。(GitHub)

今回の更新はAI/Copilot機能追加ではなく、Container Apps管理SDK移行の整理

見出しだけを見ると「Azure REST APIのAI/Copilot更新」と混同しやすいですが、このPRの主目的はCopilot機能やAI機能の追加ではありません。コミットの一部にCopilot co-authored表記はありますが、PR本文で説明されている実体はContainer AppsのREST API仕様とC#管理SDK生成の移行支援です。(GitHub)

したがって、Azure Portalに新しいAI機能が追加されたか、Container AppsにCopilot用の新エンドポイントが増えたかを確認する記事ではなく、管理SDK・REST API仕様・TypeSpec移行に伴う影響を確認する記事として読むのが正確です。

影響を受けやすい利用者と、影響が小さい利用者

今回の更新で最も影響を受けやすいのは、C#で Azure.ResourceManager.AppContainers を使い、Azure Container Appsをコードから作成・更新・診断・削除している開発者です。コンパニオンSDK PRでは、Azure.ResourceManager.AppContainers をAutoRest生成からTypeSpec management generationへ移行し、1.5.0とのApiCompatを維持するためのC#スコープのTypeSpec decoratorや最小限のSDK custom shimを使ったことが説明されています。(GitHub)

利用者・チーム影響度確認すべきこと
Azure Portal中心の運用担当者通常運用への直接影響は限定的。新しいサブスクリプションでは Microsoft.App の登録状態を確認
Azure CLI中心の運用担当者低〜中CLIが内部で利用するAPI・SDKの更新タイミングに注意。自動化スクリプトはステージングで確認
REST APIを直接呼ぶ開発者api-version、URL、レスポンス、診断系エンドポイントのテストを実施
C#管理SDK利用者型名・プロパティ名・メソッド名・ページング・診断リソースのコンパイルテストを実施
SDK生成・社内ラッパー開発チームTypeSpec生成結果、API互換性、命名規則、CIの再生成処理を確認
IaC・CI/CD管理者ARM/Bicep/Terraformとは別に、独自REST呼び出しやSDK管理コードの有無を棚卸し

直接REST APIを呼んでいる場合、今回のC#向け命名変更そのものはJSONのフィールド名やHTTPエンドポイント名と同じとは限りません。一方で、診断rootやDetector、Job、Certificateまわりの仕様形状が更新されているため、診断APIを自動化している場合は軽視しないでください。(GitHub)

変更点:C# management emitter configurationが追加された

tspconfig.yaml には、C#管理SDK生成向けに @azure-typespec/http-client-csharp-mgmt の設定が追加されています。出力先は sdk/containerapps/Azure.ResourceManager.AppContainers、namespaceは Azure.ResourceManager.AppContainers とされています。(GitHub)

@azure-typespec/http-client-csharp-mgmt:
  emitter-output-dir: "{output-dir}/sdk/containerapps/Azure.ResourceManager.AppContainers"
  namespace: "Azure.ResourceManager.AppContainers"
  enable-wire-path-attribute: true

これは、REST APIの呼び出し先が変わるという意味ではありません。TypeSpecからC#管理SDKを生成する際の設定が明示されたという意味です。SDKを利用するアプリケーション側では、NuGetパッケージの更新時や社内生成SDKの再生成時に、公開APIの差分を確認する必要があります。

実務では、以下のようなコードがあるプロジェクトを洗い出してください。

dotnet list package | grep Azure.ResourceManager.AppContainers
grep -R "Azure.ResourceManager.AppContainers" .
grep -R "ContainerApp" .

Windows環境であれば、PowerShellで次のように確認できます。

dotnet list package | Select-String "Azure.ResourceManager.AppContainers"
Get-ChildItem -Recurse -File | Select-String "Azure.ResourceManager.AppContainers"

変更点:C#スコープの命名・型カスタマイズが追加された

client.tsp には、C#向けに多数の @@clientName@@alternateType@@markAsPageable が追加されています。代表例として、診断メタデータのC#互換モデル、Usageの単位、OpenID Connect client credential method、ARM resource ID、IPv4アドレス、URL型などの扱いが調整されています。(GitHub)

特に注意したいのは、C# SDKのプロパティ名とREST APIのJSONプロパティ名を混同しないことです。たとえばC# SDKでは IsEnabledIsValidIsZoneRedundant のような.NETらしい名前に調整されることがありますが、REST APIのリクエスト・レスポンスJSONが同じ名前になるとは限りません。SDK利用コード、JSONを直接組み立てるコード、独自DTOを使うコードが混在している場合は、同じ項目を二重に変換していないか確認してください。

確認対象になりやすい項目は次のとおりです。

確認対象見るべきポイント
診断メタデータDiagnosticsDefinition のC#互換モデルや ContainerAppDiagnosticsMetadata 周辺
Private EndpointContainerAppPrivateEndpointConnectionData.ConnectionState 周辺
IPアドレスstaticIpoutboundIpAddresses などがSDK側でどの型になるか
ARMリソースIDmanagedEnvironmentIdenvironmentId などの扱い
URLregistry、source control、event stream endpointなど
BooleanプロパティenabledIsEnabled になるような命名差分
ページング@@markAsPageable が付いたlist系操作の列挙方法

コンパニオンSDK PRでは、API export、management naming scanner、dotnet build などの検証が通ったことも示されています。ただし、これはリポジトリ側の検証であり、利用者側の既存コードがすべて無修正で動くことを保証するものではありません。(GitHub)

変更点:診断rootとDetector系リソースの形状が整理された

今回の更新で実務上見落としやすいのが、診断系の操作です。Diagnostic.tsp では、Container App、Managed Environment、Jobの診断に関するLegacyOperationsやResourceNameが整理されています。たとえば ContainerAppDetectorContainerAppDetectorPropertyContainerAppManagedEnvironmentDetectorContainerAppManagedEnvironmentDetectorResourceProperty などのResourceNameが定義されています。(GitHub)

Container Appsの運用では、通常の作成・更新・削除だけでなく、障害調査やヘルスチェックのために診断APIを使うことがあります。監視基盤や運用ダッシュボードが診断APIを直接呼んでいる場合、通常のデプロイテストだけでは影響を検出できません。

次のような処理がある場合は、重点的に確認してください。

処理確認ポイント
Container Appの診断一覧取得Detector一覧の取得結果、ページング、モデル名
Container Appのrevision診断revision名を含むパス、戻り値のモデル
Managed Environment診断managedEnvironments 配下のdiagnostics操作
Job診断jobs 配下の detectorPropertiesdetectors 操作
障害調査用の社内ツールSDKの型名変更、レスポンスDTOのマッピング

Job.tsp では JobDetectorPropertyOps が追加され、Jobのdiagnostic property取得が専用のLegacyOperations経由で表現されています。Jobの実行履歴、停止、診断取得をSDKでまとめて扱っている場合は、メソッド名や戻り値の型に依存したテストを用意してください。(GitHub)

変更点:Certificate操作にもResourceNameが追加された

Certificate.tsp では、Connected Environment配下の証明書に ContainerAppConnectedEnvironmentCertificate、Managed Environment配下の証明書に ContainerAppManagedEnvironmentCertificate というResourceNameが設定されています。(GitHub)

証明書そのものの作成・更新・削除の運用フローが急に変わるというより、SDK生成時に「どの親リソース配下の証明書か」をより明確に扱うための調整と見るのが自然です。独自ツールで証明書をローテーションしている場合は、Connected Environment向けとManaged Environment向けの処理を混同していないか確認してください。

管理者が確認すべき設定

Azure REST APIやSDKの更新時に、管理者が最初に確認すべきなのはリソースプロバイダー、RBAC、利用APIの棚卸しです。Azureのリソースプロバイダーは特定サービスの機能を支えるREST操作の集合で、Container Appsでは Microsoft.App が関係します。Microsoft Learnでは、利用する準備ができたリソースプロバイダーだけを登録すること、登録には /register/action 権限が必要で、ContributorまたはOwnerロールに含まれることが説明されています。(Microsoft Learn)

確認項目コマンド例判断基準
Microsoft.App の登録状態az provider show --namespace Microsoft.App --query registrationState -o tsvRegistered であること
Provider登録az provider register --namespace Microsoft.App新規サブスクリプションや検証環境で必要な場合のみ
利用中のAPI呼び出しgrep -R "management.azure.com" .独自REST呼び出しがないか確認
利用中のSDKdotnet list packageAzure.ResourceManager.AppContainers の利用有無
権限サービスプリンシパル、マネージドID、RBAC割り当てContainer Apps管理操作に必要な権限があるか

PowerShellを使う場合は、次のように確認できます。

Get-AzResourceProvider -ProviderNamespace Microsoft.App
Register-AzResourceProvider -ProviderNamespace Microsoft.App

既存環境で正常にContainer Appsを運用できている場合でも、検証用サブスクリプションや新しいランディングゾーンでは Microsoft.App が未登録のことがあります。SDK移行やCI/CD更新の検証時に、Provider未登録をSDK不具合と誤認しないようにしてください。

開発者が移行時に確認すべきポイント

C#開発者は、NuGetパッケージの更新だけでなく、公開APIの名前・型・ページング・診断処理まで確認する必要があります。コンパニオンSDK PRでは、AutoRestからTypeSpec management generationへ移行し、API互換性や命名スキャナー、ビルド検証を実施したことが示されています。(GitHub)

実務では、次の順番で確認すると失敗しにくくなります。

手順作業目的
影響範囲の棚卸しAzure.ResourceManager.AppContainers の参照箇所を検索変更対象を限定する
SDK更新を別ブランチで実施パッケージ更新または生成SDK差し替え本番ブランチへの混入を防ぐ
コンパイルテストdotnet buildメソッド名・型名の差分を早期発見
単体テスト既存の管理操作テストを実行既存コードの互換性を確認
スモークテスト作成・更新・一覧・診断・削除を検証環境で実行実際のAzure API呼び出しを確認
ロールバック準備旧SDKバージョン・旧生成コードを保持障害時に戻せる状態を作る

特に、以下のようなコードは差分の影響を受けやすいです。

// 例:型名やプロパティ名に強く依存しているコード
// 実際の名前は利用中のSDKバージョンで確認してください。
var containerApp = await containerAppResource.GetAsync();
var data = containerApp.Value.Data;

// プロパティ名を文字列で参照するコードは要注意
var propertyName = "ConnectionState";

リフレクション、独自マッパー、JSONシリアライズ設定、OpenAPI/TypeSpec生成物をもとにした社内ラッパーは、通常のコンパイルテストだけでは問題が見つからないことがあります。文字列でプロパティ名やモデル名を参照している箇所は、検索して手動確認してください。

REST APIを直接呼ぶ場合の注意点

Azure REST APIを直接呼ぶ場合は、SDKのC#名ではなく、HTTPメソッド、URL、api-version、リクエストボディ、レスポンス、認証ヘッダーを確認します。Azure REST APIは、要求URI、HTTPメソッド、ヘッダー、必要に応じたJSONボディ、レスポンスステータスや本文で構成され、Azure Resource Manager Provider APIでは https://management.azure.com/api-version が重要になります。(Microsoft Learn)

チェックすべき例は次のとおりです。

grep -R "Microsoft.App" .
grep -R "containerApps" .
grep -R "managedEnvironments" .
grep -R "detectors" .
grep -R "detectorProperties" .
grep -R "api-version" .

REST API利用者がやってはいけないのは、「SDKのC#プロパティ名が変わったからREST JSONも同じように変える」と判断することです。SDK名とRESTペイロードは別の層です。REST呼び出しの変更は、必ずMicrosoft LearnのREST APIリファレンス、実際のレスポンス、ステージング環境での検証結果を基準にしてください。

また、Azure REST APIのlist操作では、結果が大きい場合に nextLink が返り、継続取得が必要になることがあります。ページング対応を固定の1回取得で済ませている社内ツールは、SDK移行や生成形状の変更をきっかけに不具合が表面化しやすいので見直してください。(Microsoft Learn)

展開時に失敗しやすいポイント

今回のような仕様・SDK生成まわりの更新では、アプリケーション本体よりも管理用コード、運用スクリプト、監視ツールで問題が起きやすくなります。

失敗しやすいポイント起きること対策
REST API更新とSDK更新を混同する不要なJSON変更を入れてしまうREST呼び出しとSDK利用箇所を分けて確認
C#の命名差分を軽視するコンパイルエラーやマッピング不備が起きるdotnet build とプロパティ名検索を実施
診断APIをテストしない障害時の調査ツールだけ壊れるdetectorsdetectorProperties を含むテストを追加
新規環境でProvider未登録CI/CDや検証デプロイが失敗するMicrosoft.App の登録状態を事前確認
SDK更新とAPI version更新を同時に行う問題の原因を切り分けにくい変更を分けて段階的に展開
ページングを1ページ前提にする一覧取得漏れが起きるnextLink またはSDKのページング列挙を使う
旧AutoRest生成物前提の社内ラッパーを残すTypeSpec生成後の型とずれる生成元・生成コマンド・差分レビューを更新

特にCI/CDパイプラインでは、SDK更新後に「ビルドは通るが実行時に権限やProvider登録で失敗する」ケースがあります。ビルド、単体テスト、Azure実環境へのスモークテストを分けて実施してください。

管理者・開発者向けの実践チェックリスト

今回の更新を受けて、すべての環境で大規模な移行作業が必要になるわけではありません。まずは、Container Apps管理操作をどの経路で行っているかを確認してください。

管理者向けチェック

  • Microsoft.App リソースプロバイダーが対象サブスクリプションで登録済みか確認する
  • Container Appsを操作するサービスプリンシパルやマネージドIDのRBACを確認する
  • CI/CDでREST APIを直接呼んでいないか検索する
  • 診断、証明書、Private Endpoint、Job操作を自動化しているツールを洗い出す
  • SDK更新と本番デプロイを同じ変更セットにしない

開発者向けチェック

  • Azure.ResourceManager.AppContainers の利用箇所を検索する
  • NuGet更新前後でコンパイルエラーを確認する
  • ConnectionStateIsEnabledStaticIPOutboundIPAddressList など名前に依存するコードを確認する
  • 診断API、Job、Certificate、Private Endpoint周辺のスモークテストを実行する
  • ページング対象のlist操作を1件・複数件・大量件数で確認する
  • 旧AutoRest生成物を前提にした社内ラッパーをTypeSpec生成物に合わせて見直す

判断基準:すぐ対応すべきケースと静観でよいケース

今回のAzure REST API documentation updateは、すべてのAzure利用者に即時対応を求める内容ではありません。対応優先度は、Container Appsの管理方法で判断してください。

状況優先度次にやること
Azure PortalだけでContainer Appsを管理している公式更新を把握し、Provider登録状態のみ確認
Azure CLIで基本操作だけをしている低〜中スクリプトの実行確認。SDK更新情報は様子見
REST APIでContainer Appsを自動管理しているapi-version、診断系、list系操作をステージングで確認
C# SDKで管理操作をしているパッケージ更新検証、コンパイル、スモークテストを実施
SDK生成・社内SDKを保守しているTypeSpec差分、C#カスタマイズ、API互換性をレビュー
診断・Job・証明書を自動化している通常CRUD以外の運用シナリオを個別に検証

「C# SDKを使っていないから完全に無関係」と決めつけるのも危険です。PRではC#カスタマイズが中心ですが、APIViewはTypeSpec、Go、Java、Python、JavaScript向けのAPIレビューも作成しています。SDKを自動生成しているチームや複数言語SDKを併用している組織は、各言語の更新タイミングも確認してください。(GitHub)

まとめ:次に取るべき行動

今回の更新は、Azure Container Appsそのものの新機能追加というより、Azure REST API仕様からC#管理SDKをより適切に生成するための移行・互換性調整です。直接影響が大きいのは、Azure.ResourceManager.AppContainers を使うC#開発者、SDK生成チーム、診断・Job・証明書・Private Endpointまわりを自動化している運用チームです。

まずは、自社環境でContainer Appsをどの経路で管理しているかを確認してください。Portal中心ならProvider登録と運用影響の把握で十分な場合が多いです。C# SDKやREST APIを使っている場合は、ステージング環境でSDK更新、コンパイル、診断API、ページング、Job、Certificate、Private Endpoint操作を一通り検証してから本番展開に進めるのが安全です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次