2026年5月5日に、Azure REST API仕様へ「Private Endpoint Billing Sku Property in 2025-07-01」が追加されました。結論から言うと、Azure REST APIでPrivate Endpointを作成・更新・取得するコードやIaCを扱っているチームは、2025-07-01 APIバージョンを使うタイミングでbillingSkuプロパティの有無を確認すべきです。既存環境をすぐ変更しなければならない情報というより、APIレスポンスやスキーマ検証、SDK生成、コスト管理の観点で見落とすと不具合や確認漏れにつながる変更です。(GitHub)
今回の更新では、PrivateEndpointPropertiesに任意プロパティとしてbillingSkuが追加され、値としてPayAsYouGoとFixedが定義されています。PayAsYouGoはPrivate Endpointの既定価格、Fixedは高いデータ処理量のPrivate Endpointに適したSKUとして説明されています。(GitHub)
Azure REST APIのPrivate Endpointに追加されたbillingSkuとは
billingSkuは、Azure Private Endpointの課金SKUを表すプロパティです。今回のPRでは、2025-07-01の安定版APIに対して、Private Endpointのプロパティとして追加されています。対象はAzure REST API仕様を管理するAzure/azure-rest-api-specsリポジトリで、このリポジトリはAzure REST API仕様の基準となるソースです。(GitHub)
追加された定義を整理すると、次のようになります。
| 項目 | 内容 |
|---|---|
| 対象API | Azure REST API / Microsoft.Network |
| 対象リソース | Private Endpoint |
| APIバージョン | 2025-07-01 stable |
| 追加プロパティ | properties.billingSku |
| 型 | enum扱いの文字列 |
| 値 | PayAsYouGo、Fixed |
| 必須/任意 | 任意プロパティ |
| 主な確認対象 | REST API、SDK、IaC、スキーマ検証、コスト管理 |
重要なのは、billingSkuが「Private Endpointの接続先サービス」や「プライベートDNSの設定」を直接置き換える項目ではないことです。ネットワーク接続そのものの設定というより、Private Endpointの課金モデルをAPI上で扱えるようにする変更と捉えると分かりやすいです。
何が変わったのか
今回の変更点は大きく3つです。
PrivateEndpointPropertiesにbillingSkuが追加された
Private Endpointのプロパティに、課金SKUを表すbillingSkuが追加されました。TypeSpec上では@added(Versions.v2025_07_01)として定義されており、2025-07-01以降のAPIバージョンで扱う項目として位置づけられています。(GitHub)
イメージとしては、Private Endpointの作成・更新リクエスト、または取得レスポンスで、次のようなプロパティを扱う可能性が出てきます。
{
"properties": {
"billingSku": "PayAsYouGo"
}
}
実際のリクエストでは、サブネット、プライベートリンクサービス接続、IP構成など他のPrivate Endpoint設定も含まれます。billingSkuだけでPrivate Endpointを作成できるわけではありません。
enum値としてPayAsYouGoとFixedが定義された
billingSkuの値は、次の2種類です。
| 値 | 説明 | 実務上の見方 |
|---|---|---|
PayAsYouGo | Private Endpointの既定価格として説明されている | 通常利用や従量課金前提の構成でまず確認すべき値 |
Fixed | 高いデータ処理量のPrivate Endpointに適していると説明されている | 大量通信や安定した通信量がある環境で、コスト比較の対象になり得る値 |
ただし、実際の料金は契約種別、リージョン、通貨、購入時期などで変わります。Azure Private Linkの価格ページでも、表示価格は見積もりであり、実際の価格は契約や為替などによって異なる可能性があると説明されています。コスト判断ではAPI仕様だけでなく、料金計算ツールや契約条件の確認が必要です。(Microsoft Azure)
common.jsonとvirtualNetwork.jsonにも反映された
PRの差分では、stable/2025-07-01/common.jsonにCommon.PrivateEndpointBillingSkuが追加され、stable/2025-07-01/virtualNetwork.jsonのPrivate EndpointプロパティにbillingSku参照が追加されています。つまり、単なる説明文の追記ではなく、OpenAPI/Swagger由来のクライアント生成や検証にも影響し得る仕様変更です。(GitHub)
誰が対応すべきか
すべてのAzure利用者がすぐに設定変更する必要はありません。対応優先度が高いのは、Azure REST APIやスキーマを直接扱っているチームです。
| 対象者 | 対応優先度 | 確認すべきこと |
|---|---|---|
| Azure REST APIを直接呼び出している開発者 | 高 | 2025-07-01を使う予定があるか、レスポンスの新プロパティで処理が壊れないか |
| SDKを自動生成・更新しているチーム | 高 | モデルクラスやenum定義にbillingSkuが追加されるか |
| Terraform AzAPI、ARMテンプレート、Bicepを使うIaC担当者 | 中〜高 | スキーマ検証、差分検出、ポリシー評価に影響がないか |
| コスト管理・FinOps担当者 | 中 | Private Endpointの課金SKUを管理・棚卸しの観点に入れるか |
| Azure Portal中心でPrivate Endpointを少数管理している利用者 | 低〜中 | 今後のAPIバージョンや課金表示の変化を把握しておく |
特に注意したいのは、「REST APIのレスポンスに未知のプロパティが増えると失敗する」実装です。通常、JSONレスポンスに追加フィールドが増えても無視できる設計が望ましいですが、厳密なスキーマ検証や独自パーサーを使っている場合は、billingSkuの追加でテストが失敗することがあります。
影響範囲:既存のPrivate Endpointはどうなるか
今回の更新は、2025-07-01 APIバージョンにおけるPrivate Endpointプロパティ追加です。billingSkuは任意プロパティとして追加されているため、既存のPrivate Endpointをただちに再作成する必要がある、という種類の変更ではありません。
ただし、次のケースでは影響が出る可能性があります。
APIバージョンを2025-07-01へ上げる場合
現在のコードやテンプレートが古いAPIバージョンを使っている場合、2025-07-01へ切り替えることでレスポンスや生成モデルにbillingSkuが現れる可能性があります。
確認すべきポイントは次のとおりです。
| 確認対象 | 見るべきポイント |
|---|---|
| REST APIクライアント | 未知のJSONプロパティを許容できるか |
| DTO/モデルクラス | billingSku追加に伴うコンパイルエラーがないか |
| CIのスキーマ検証 | 追加プロパティをエラー扱いしていないか |
| API差分テスト | レスポンス比較が完全一致前提になっていないか |
| 監査ログ・棚卸し処理 | billingSkuを記録対象に含めるか |
特に、レスポンス全体をスナップショットとして比較するテストは失敗しやすいです。Private EndpointのAPIレスポンスを固定JSONと完全一致で比較している場合は、properties.billingSkuの追加を許容する形に直すのが安全です。
SDKを更新する場合
PR上では、API変更チェックによりGo、Java、TypeSpecのAPIレビューが作成されています。SDK生成や言語別パッケージに影響し得る変更であることが分かります。(GitHub)
SDK更新時は、次のような変化が起きる可能性があります。
- Private Endpoint関連のモデルに
billingSkuプロパティが追加される PrivateEndpointBillingSkuのようなenumまたは文字列型が追加される- 生成コードの差分により、既存のテストや型チェックが変わる
- SDKのバージョンによって、REST API仕様の反映タイミングが異なる
実務では、SDK更新とAPIバージョン変更を同時に行うと原因切り分けが難しくなります。先にSDK更新だけをテストし、その後APIバージョンを切り替えるなど、変更を分けると安全です。
IaCでPrivate Endpointを管理している場合
ARMテンプレート、Bicep、Terraform AzAPIなどでPrivate Endpointを管理している場合、billingSkuを明示すべきかどうかを検討する必要があります。
判断の目安は次のとおりです。
| 状況 | 推奨対応 |
|---|---|
| 既存構成を維持したい | まず現状のAPIレスポンスでbillingSkuが返るか確認する |
| 新規Private Endpointを大量作成する | PayAsYouGoとFixedのどちらを使うべきか、通信量と料金条件を確認する |
| 厳密なポリシー管理をしている | Azure Policyや独自チェックにbillingSku条件を追加するか検討する |
| コスト配賦を細かく管理している | タグだけでなく、SKU情報も棚卸し対象に含める |
| APIバージョン固定のテンプレートを使っている | apiVersionを上げたときの差分を検証環境で確認する |
billingSkuは任意プロパティなので、テンプレートに必ず追加しなければならないとは限りません。むしろ、料金や対応リージョン、サービス側の扱いを確認しないままFixedを明示するほうがリスクになります。
まず確認すべき変更点チェックリスト
今回のAzure REST API documentation updateを受けて、実務で確認すべき項目をチェックリストにまとめます。
| チェック項目 | 確認方法 | 注意点 |
|---|---|---|
| 使用中のAPIバージョン | コード、ARM/Bicep、AzAPI、SDK設定を確認 | 2025-07-01を使っていなければ直ちに影響しない場合が多い |
| レスポンス処理 | Private Endpoint取得APIの戻り値をテスト | 未知プロパティで例外になる実装は修正 |
| スキーマ検証 | JSON Schema、OpenAPI検証、CIを確認 | 完全一致テストは失敗しやすい |
| SDK差分 | 生成モデルやenumの変更を確認 | SDK反映タイミングは言語やパッケージで異なる |
| IaC差分 | plan、what-if、差分検出を実行 | 意図しない更新扱いにならないか確認 |
| コスト影響 | Azure料金ページ、料金計算ツール、契約条件を確認 | API仕様だけで料金を断定しない |
| 運用ルール | 命名規則、棚卸し、監査項目を見直す | SKU情報を記録対象にするか決める |
移行時のおすすめ手順
2025-07-01 APIバージョンへ移行する場合は、いきなり本番環境でPrivate Endpointの作成・更新を行うのではなく、段階的に確認します。
既存コードのAPIバージョンを洗い出す
まず、Private Endpointを操作している箇所を探します。
確認対象の例は次のとおりです。
Microsoft.Network/privateEndpoints
api-version=2025-07-01
privateEndpoints
PrivateEndpointProperties
REST APIを直接呼び出している場合は、URLクエリのapi-versionを確認します。IaCの場合は、ARMテンプレートやBicepのapiVersion、Terraform AzAPIのtype指定を確認します。
検証環境でGETレスポンスを確認する
次に、既存のPrivate EndpointをGETし、properties.billingSkuが返るかを確認します。
例として、REST APIのレスポンス確認では次の観点を見ます。
{
"id": "...",
"name": "...",
"type": "Microsoft.Network/privateEndpoints",
"properties": {
"billingSku": "PayAsYouGo"
}
}
実際のレスポンスは環境やAPIの反映状況によって異なる可能性があります。返ってこない場合でも、仕様上追加されたプロパティとして、将来返る可能性を前提にパーサーや検証を作るのが安全です。
PUT/PATCH時に不要な上書きをしない
Private Endpointの更新処理で、既存リソースのJSONを取得して一部だけ変更し、そのままPUTする実装は注意が必要です。
新しいプロパティを理解しないままリクエストから落としてしまうと、意図せず既定値に戻る、またはサービス側の検証に引っかかる可能性があります。Azure REST APIではリソースごとにPUT/PATCHの扱いが異なるため、更新前後の差分を必ず確認してください。
特に次の実装は見直す価値があります。
- 取得したJSONから自社が知っているプロパティだけを抽出してPUTしている
additionalProperties: falseのような厳密な検証をしている- レスポンスを固定のDTOへ変換し、未知フィールドを破棄している
- 既存JSONと新JSONを完全一致で比較している
コスト判断は料金情報とセットで行う
Fixedという値を見ると「固定料金なら安いのでは」と判断したくなりますが、API仕様だけでは最適な料金モデルは決められません。Azure Private Linkでは、Private Endpointの時間課金、受信・送信データ処理量、データ転送料金などが関係します。Azureの価格ページでも、データ処理料金はトラフィック方向に基づき、データ転送料金は別途適用されると説明されています。(Microsoft Azure)
判断時は、少なくとも次の情報を集めます。
| 確認項目 | 理由 |
|---|---|
| 月間の受信・送信データ量 | Fixedが有利になるか判断する基礎になる |
| リージョン | Private Linkの料金はリージョンで変わる可能性がある |
| 契約形態 | EA、CSP、従量課金などで実料金が変わる可能性がある |
| 通信パターン | 一時的なピークか、常時大量通信かで判断が変わる |
| 接続先サービス | Storage、SQL、独自Private Link Serviceなどで運用要件が違う |
実装時に失敗しやすいポイント
今回の変更は小さく見えますが、API仕様変更としては見落としやすいポイントがあります。
billingSkuを必須項目として扱ってしまう
PR上ではbillingSku?: PrivateEndpointBillingSkuとして任意プロパティになっています。したがって、レスポンスに常に存在する、または作成時に必ず指定すべき、と決めつけるのは避けるべきです。(GitHub)
実装では、次のように存在しないケースを許容します。
const billingSku = privateEndpoint.properties?.billingSku ?? "未指定";
業務ロジック上で「未指定ならPayAsYouGoとみなす」処理を入れる場合も、仕様上の既定説明と実際の課金表示が一致するかを検証してからにしましょう。
enumを閉じた値として扱いすぎる
OpenAPI差分ではx-ms-enumにmodelAsString: trueが設定されています。これは、SDK生成やモデル化において文字列として扱える余地を持たせる設定です。(GitHub)
現時点で値はPayAsYouGoとFixedですが、将来値が追加される可能性を完全には否定できません。実装では、未知の値が来た場合にエラーで停止するのではなく、ログに記録して安全側に倒す設計が現実的です。
switch (billingSku)
{
case "PayAsYouGo":
// 通常の従量課金SKUとして扱う
break;
case "Fixed":
// 固定SKUとして扱う
break;
default:
// 将来追加された値に備えて、警告ログを出して処理を継続
break;
}
APIバージョン変更と料金変更を混同する
billingSkuがAPIに追加されたことと、実際の課金がいつ・どの条件で変わるかは同じではありません。API仕様にプロパティが追加されると、管理・取得・作成時に扱える情報が増えますが、実料金はAzureの価格体系、契約、リージョン、サービス側の提供状況に依存します。
そのため、記事や社内資料では次のように分けて説明すると誤解を防げます。
| 観点 | 説明 |
|---|---|
| API仕様の変更 | properties.billingSkuが2025-07-01で追加された |
| 運用上の確認 | REST API、SDK、IaC、スキーマ検証で影響を確認する |
| 料金判断 | Azure料金ページ、料金計算ツール、契約条件で別途確認する |
Azure REST API利用者向けの実務対応例
ここでは、立場別に具体的な対応例を整理します。
REST APIを直接使っている場合
REST APIを直接呼び出してPrivate Endpointを作成・更新している場合は、まずapi-versionを固定で管理しているか確認します。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/privateEndpoints/{privateEndpointName}?api-version=2025-07-01
確認すべきことは、レスポンスにbillingSkuが含まれても処理が壊れないことです。特に、APIレスポンスを独自の型へ変換している場合、未知プロパティを許容する設定にしておくと安全です。
SDK利用者の場合
SDKを利用している場合、すぐにコードへbillingSkuが現れるとは限りません。Azure REST API仕様の更新後、各言語SDKへ反映されるまでにはタイミング差があります。
対応としては、次の順で確認します。
| 手順 | 内容 |
|---|---|
| 1 | 利用中SDKのバージョンを確認する |
| 2 | Private EndpointモデルにbillingSku相当のプロパティが追加されているか確認する |
| 3 | enumまたは文字列型の扱いを確認する |
| 4 | 既存テストでPrivate Endpointの作成・更新・取得を実行する |
| 5 | 生成コードや型定義の変更をレビューする |
SDK更新後にコンパイルが通っても、運用上の棚卸しやコストレポートに反映されていなければ意味がありません。コード変更だけでなく、監査・運用側の確認項目にも入れると実用的です。
IaC利用者の場合
BicepやARMテンプレートでは、APIバージョンを上げると利用可能なプロパティが変わります。TerraformでAzAPIプロバイダーを使っている場合も、typeに含まれるAPIバージョンが影響します。
例として、AzAPIでは次のような形式でAPIバージョンを指定します。
type = "Microsoft.Network/privateEndpoints@2025-07-01"
このような定義に切り替える場合は、billingSkuを明示するかどうかを検討します。まだ料金・提供条件・社内ルールが固まっていない段階では、いきなり本番テンプレートにFixedを入れるより、検証環境でAPIレスポンスと差分を確認するほうが安全です。
コスト管理で見直したいポイント
billingSkuの追加は、FinOpsやクラウドコスト管理にも関係します。Private Endpointは、単体では小さなコストに見えても、サブスクリプションや環境が増えると数が膨らみやすいリソースです。
特に、次のような環境では棚卸しをおすすめします。
- 開発・検証・本番でPrivate Endpointを大量に作っている
- Storage、SQL、Key Vault、App Serviceなど複数サービスへPrivate Endpointを張っている
- Hub-Spoke構成で接続元ネットワークが多い
- 月間データ処理量が大きい
- 部門別・プロジェクト別にコスト配賦している
棚卸しでは、Private Endpointの名前やタグだけでなく、次の項目を併せて見ると判断しやすくなります。
| 棚卸し項目 | 目的 |
|---|---|
| リソースグループ | 管理単位を把握する |
| 接続先サービス | どのサービス向けのPrivate Endpointか分ける |
| リージョン | 料金や設計制約の確認に使う |
| タグ | 部門・システム・環境別に配賦する |
billingSku | 課金SKUの確認に使う |
| 通信量 | PayAsYouGoとFixedの比較材料にする |
今回の更新でやるべきこと
今回のAzure REST API documentation updateは、Private Endpointを使っているすべての環境で即時対応が必要な重大変更というより、2025-07-01 APIバージョンへ移行するチームが事前に確認すべき仕様追加です。
実務では、次の順で進めるのが現実的です。
| 優先度 | 対応内容 |
|---|---|
| 高 | Private Endpoint操作で使っているAPIバージョンを確認する |
| 高 | レスポンスにbillingSkuが追加されても処理が壊れないかテストする |
| 中 | SDKやIaCのスキーマ差分を確認する |
| 中 | コスト管理・棚卸しにbillingSkuを含めるか検討する |
| 低〜中 | Fixedの利用可否や料金メリットを検証環境で確認する |
まずは、自社のコード・IaC・SDKがMicrosoft.Network/privateEndpointsをどのAPIバージョンで扱っているかを確認してください。2025-07-01へ移行する予定があるなら、billingSkuを「未知の追加フィールド」として無視するのではなく、スキーマ検証、コスト管理、運用棚卸しの観点で扱い方を決めておくことが重要です。

コメント