本文へ移動
技術を、自社の仕事に。
判断と実行を助けるメディア

記事を検索

Compute EngineのAPIに日付の版 部分成功の既定が変わる

目次 · 7項目

夜間にプロジェクト内のVMを一覧にして台帳と突き合わせるスクリプトや、停止し忘れたVMを探す監視の仕組みは、Compute EngineのAPIの「全ゾーンをまとめて一覧にする」呼び出し(aggregatedList)を使って作れます。このとき、どこか1つのゾーンで一時的な問題が起きると、一覧の取得そのものが失敗することがあります。逆に、失敗を避ける設定にすると、一部のゾーンが抜けた一覧が返ってきます。どちらの動きになるかは、APIの既定と呼び出し方で決まります。

Compute EngineのAPIの「日付で指定する版」は、リリースノートによると2026年9月29日に一般提供になり、2026年11月5日の公式ブログで詳しく告知されました。既存の /v1 はそのまま使えますが、新しい版ではこの一覧の既定などが変わります。本記事では、公式の資料と、編集部が版ごとのDiscovery文書とPythonのライブラリを比べた結果をもとに、既存の自動化で確かめる点を整理します。

日付の版の仕組み

ブログによると、Compute EngineのAPIはこれまで /v1(一般提供)、/beta、/alpha の3つの系統で提供されてきました。今回、これと並べて、日付を名前にした版が加わります。ドキュメントでは、この方式をinterface-based versioning(IBV)と呼んでいます。

  • 安定版(YYYY-MM-DD): 四半期ごとに公開され、最初の版は 2026-09-01。公開後に互換性を壊す変更は入らず、現時点でサポートの終了日はない
  • プレビュー版(YYYY-MM-DD-preview): 安定版から分かれて、より短い間隔で公開される。期間は1年で、最初の版は 2026-10-01-preview。互換性は保証されず、ドキュメントは重要な本番環境での利用を勧めていない
  • /v1: 引き続き完全にサポートされ、版を指定しない場合の既定のまま。ただしドキュメントは、日付の版で提供される新機能は /v1 からは使えないとしている

版は、URLのパスではなく、HTTPヘッダー X-Goog-Api-Version か、クエリの $apiVersion で指定します。パスは /compute/v1/ のままなので、リソースの selfLink の形も変わりません。シェルの二重引用符の中では $apiVersion が変数として展開されるため、ドキュメントは %24apiVersion と書くよう案内しています。

新しい版で変わること

ブログは、日付の版で次の点が変わる、または変えられるようになると書いています。

  1. 全体の一覧が既定で部分成功になる。 /v1 の aggregatedList は returnPartialSuccess の既定が false で、1つのゾーンの一時的な問題で全体が失敗し得る。新しい版では部分成功が既定になる。リリースノートも、2026-09-01 の aggregatedList は到達できない範囲があるときに既定で部分的な結果を返し、returnPartialSuccess は aggregatedList と list のメソッドでは使えなくなった、と書いている
  2. エラーが機械で読める形になる。 google.rpc.ErrorInfo に理由・領域・付随情報を入れる形式にそろえる。存在しない版を指定したときは、使える版の一覧を返す例が挙がっている
  3. IAMの権限の確認を厳しくできる。 範囲の広すぎた従来の権限の確認を、新しい版で絞れるようになる
  4. 古いリソースの定義を整理できる。 APIの設計の指針(AIP)に沿った形へ、版を分けて移す道ができる

リリースノートに具体的に載っている変更は、2026-09-01 では1の部分成功です。2026-10-01-preview では、projects.get・regions.get・regions.list の応答から quotas がなくなり、割り当ての確認にはCloud Quotas APIを使うよう案内されています。

版ごとのDiscovery文書を比べた

ブログには「版ごとのDiscovery文書を取得できる」とあります。編集部は2026年11月5日に、認証なしで取得できるDiscovery文書を、版を変えて取得しました。11月6日に取り直しても、次の数字は同じでした。

  • version=2026-09-01 と version=2026-10-01-preview は取得でき、version=2099-01-01 は「Discovery document not found」(404)になった
  • 3つとも basePath は /compute/v1/ で、revision は 20261026
  • メソッドの数は、/v1 が1,018、2026-09-01 が1,019、2026-10-01-preview が1,092。プレビュー版には安定版にない73のメソッドがある
  • /v1 では203のメソッド(list 120、aggregatedList 53 など)にある returnPartialSuccess の指定が、2026-09-01 ではすべてなくなっている

最後の点は、ブログの「部分成功が既定」と、リリースノートの「returnPartialSuccess は使えなくなった」に一致します。新しい版では、そもそも部分成功を選ぶ指定がありません。一方で、2026-09-01 のDiscovery文書とRESTリファレンスでも、aggregatedList の説明文には「失敗を防ぐため returnPartialSuccess を true にすることを勧める」という従来の文が残っていました。定義と説明文がそろっていない状態なので、説明文だけを読んで判断しないほうが安全です。なお、リリースノートが既定で部分的な結果を返すと書いているのは aggregatedList で、list の挙動には触れていません。

Compute EngineのAPIの版ごとの比較図。v1ではreturnPartialSuccessの既定がfalseで、203のメソッドに指定がある。日付の版2026-09-01では部分成功が既定で、指定そのものがない。プレビュー版2026-10-01-previewには73のメソッドが加わる。下に、クライアントライブラリ・gcloud・Terraformは版を自動で選ぶ、と添える

気をつけたいのは「自動で版が変わる」経路

直接HTTPで呼んでいるスクリプトは、ヘッダーかクエリで版を指定しない限り /v1 のままです。注意が要るのは、ライブラリやツールの側で版が決まる経路です。ブログの表には次のように書かれています。

経路版の決まり方
クライアントライブラリ(Python・Go・Java・Node.js など)ライブラリの各リリースが特定の日付の版に結び付く。パッケージ名(compute_v1 など)は変わらない
gcloudgcloud compute は同梱の安定版を使う。新しい gcloud preview compute はプレビュー版を使う。既存の gcloud compute、beta、alphaのスクリプトはそのまま動くとされている
Terraform(google・google-beta)google は安定版、google-beta はプレビュー版を内部で使う。HCLで版を指定する必要はない

つまり、コードを1行も変えなくても、ライブラリやTerraformのプロバイダーを上げたときに、一覧の取得が部分成功に変わる可能性があります。どのリリースからどの版に結び付くかは、ブログには書かれていません。

Pythonのライブラリは1.55.0から切り替わっている

そこで、Pythonのクライアントライブラリ(google-cloud-compute)のPyPIの配布物を比べました。2026年9月17日の1.54.0までは版のヘッダーを送る処理がなく、10月1日の1.55.0から11月5日の1.57.0までの正式版には 2026-09-01 を送る処理が入っています。

編集部は1.54.0と1.57.0を検証用の仮想環境に入れて動かし、APIには接続せず、aggregated_list が送ろうとする内容だけを確かめました。

版送るヘッダーreturn_partial_success=True を指定したとき
1.54.0版のヘッダーなし受け付ける
1.57.0x-goog-api-version: 2026-09-01ValueError(Unknown field)で止まる

部分成功を明示して失敗を避けていたコードは、ライブラリを上げると、リクエストを作る時点で例外になります。1.55.0以降の配布物には、この指定の定義がありません。Node.jsの7.9.0の配布物とGoのmainブランチのソースにも、2026-09-01 を送る処理が入っていました。Terraformのプロバイダーがどの版を送るかは確かめられていません。

既存の自動化で確かめること(編集部の提案)

  1. 呼び出し元を洗い出す。 VMの一覧・棚卸し・停止の自動化が、直接HTTP・クライアントライブラリ・gcloud・Terraformのどれで呼んでいるかを一覧にする。ライブラリとプロバイダーの版も控える
  2. 部分成功の結果を捨てない。 aggregatedList の応答には、取得できなかった範囲を示す unreachables がある(/v1 と 2026-09-01 の両方の定義にある)。これが空でないときに警告を出す処理を、版を変える前に入れておく。抜けたゾーンに気づかないまま「VMはない」と判断するのが一番危ない
  3. 検証環境でヘッダーを付けて試す。 本番の前に、X-Goog-Api-Version: 2026-09-01 を付けて同じ処理を動かし、件数とエラーの形を比べる
  4. ライブラリの更新を版の更新として扱う。 依存関係の自動更新のPRでも、Compute Engineのライブラリとプロバイダーは、結び付く版を確かめてからマージする。return_partial_success を指定している箇所も、更新の前に検索して外す

gcloud をAIのエージェントに操作させる場合の権限の考え方は、リモートMCPの権限設計の記事で扱いました。Terraformの運用を整える話は、OpenTofuとTerraformの記事も参照してください。

確認した範囲

2026年11月5日に、Google Cloud公式ブログの告知(同日公開)を取得し、原文と照合しました。11月6日に、Compute Engineのリリースノート、APIの版のガイド、リクエストの作り方の説明、2026-09-01 のRESTリファレンスとも照合しました(資料調査)。あわせて、Compute EngineのDiscovery文書(/v1、2026-09-01、2026-10-01-preview)を認証なしで取得し、メソッドとパラメーターを比べました。Pythonのライブラリ1.54.0と1.57.0は、macOS 26.5.1上のPython 3.15.0で動かし、APIに接続しない形で送信内容を確かめました(実機検証)。認証が必要なAPIの呼び出しは行っていないため、部分成功の実際の応答、定義にないパラメーターをHTTPで直接送ったときの扱い、ErrorInfo の実際の内容は未確認です。Terraformのプロバイダーが送る版、JavaなどPython・Node.js・Go以外のライブラリも確認していません。

クラウドの自動化やインフラの構成管理の見直しは、開発・AI・自動化のご相談からお問い合わせください。

参考資料

この記事を共有XFacebook
鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

この記事のテーマを、自社の次の一歩へ

自社での進め方を、具体的に。

つくりたい仕組み、既存システム、運用の条件を整理し、実現に向けた次の一歩を考えます。

  • 実現したい仕組み
  • 既存環境との接続
  • 運用の条件
開発・運用の構想を相談する

構想段階からご相談いただけます。この記事の情報を相談フォームに引き継ぎます。

最新記事をメールで受け取る