Vertex AIのClaudeエンドポイント3種 — 10%の料金差と選び方
Google CloudのVertex AIでClaude APIを呼ぶときの、globalとマルチリージョンとリージョナルの違い。10%の上乗せ、データルーティング、非対応機能を示します。
エンドポイントは3種類、料金差は10%
Google CloudのVertex AI(現在はAgent Platformとも表記される)でClaudeを呼ぶと、接続先のエンドポイントを3種類から選ぶことになります。グローバル、マルチリージョン、リージョナルです。
選択を決めるのは、データをどこで処理させたいかと、料金です。グローバルが基準価格で、マルチリージョンとリージョナルには10%の上乗せがあります。
| 種類 | ルーティング | 料金 | 従量課金 | プロビジョンドスループット |
|---|---|---|---|---|
| グローバル | ルーティング空き容量のあるリージョンへ動的に振り分け | 料金基準 | 従量課金対応 | プロビジョンドスループット非対応 |
| マルチリージョン | ルーティングusまたはeuの地域内で動的に振り分け | 料金基準の10%増 | 従量課金対応 | プロビジョンドスループット非対応 |
| リージョナル | ルーティング指定したリージョンを通る | 料金基準の10%増 | 従量課金対応 | プロビジョンドスループット対応 |
この記事は、APIを自分のコードから呼ぶ実装側の話です。Claude CodeをVertex AI経由で使う設定はClaude CodeでVertex AIのリージョンを設定するが扱っています。
SDKを入れて最初の1リクエストを通す
準備は、SDKのインストールとGoogle Cloudの認証の2つです。Pythonならvertexエクストラ付きで入れます。
pip install -U "anthropic[vertex]"
gcloud auth application-default loginTypeScriptは@anthropic-ai/vertex-sdk、C#はAnthropic.Vertexパッケージです。GoやJava、Ruby、PHPにも対応するSDKがあります。
最小の呼び出しは次のとおりです。クラスはAnthropicではなくAnthropicVertexで、regionにエンドポイントの種類を渡します。
from anthropic import AnthropicVertex
client = AnthropicVertex(project_id="MY_PROJECT_ID", region="global")
message = client.messages.create(
model="claude-opus-5-5",
max_tokens=100,
messages=[{"role": "user", "content": "Hey Claude!"}],
)
print(message)モデルIDは、日付サフィックスの有無が世代で分かれます。Opus 5.5はclaude-opus-5-5、Sonnet 5.5はclaude-sonnet-5-5と日付なしです。一方でSonnet 4.5はclaude-sonnet-4-5@20250929、Haiku 4.5はclaude-haiku-4-5@20251001のように@日付が付きます。BedrockのモデルIDとは表記が違うので、コードを移植するときは書き換えが必要です。
curlで直接叩く場合、URLのlocations/の後ろにリージョンを入れ、:rawPredictを呼びます。リクエスト本文には"anthropic_version": "vertex-2023-10-16"が必須です。
MODEL_ID=claude-opus-5-5
PROJECT_ID=MY_PROJECT_ID
curl https://aiplatform.googleapis.com/v1/projects/${PROJECT_ID}\
/locations/global/publishers/anthropic/models/${MODEL_ID}:rawPredict \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"anthropic_version": "vertex-2023-10-16",
"messages": [{"role": "user", "content": "Hey Claude!"}],
"max_tokens": 100
}'regionに渡す値で接続先が変わる
エンドポイントの切り替えは、region(PHPではlocation)の文字列だけで行います。SDKが値の形を見てホスト名を選び分けます。
regionの値 | 種類 | ホスト名 |
|---|---|---|
global | 種類グローバル | ホスト名aiplatform.googleapis.com |
us / eu | 種類マルチリージョン | ホスト名aiplatform.us.rep.googleapis.com / aiplatform.eu.rep.googleapis.com |
us-east5やeurope-west1など | 種類リージョナル | ホスト名<リージョン>-aiplatform.googleapis.com |
マルチリージョンとして使える識別子はus(米国)とeu(欧州連合)の2つです。curlでマルチリージョンを叩くときは、ホスト名とパスの両方に同じ識別子を入れます。
LOCATION=us
curl https://aiplatform.${LOCATION}.rep.googleapis.com/v1/projects/${PROJECT_ID}\
/locations/${LOCATION}/publishers/anthropic/models/${MODEL_ID}:rawPredict \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{"anthropic_version": "vertex-2023-10-16",
"messages": [{"role": "user", "content": "Hey Claude!"}],
"max_tokens": 100}'リージョナルはホスト名が${LOCATION}-aiplatform.googleapis.comの形になります。ホストの形がグローバル・マルチリージョン・リージョナルで三通りあるため、URLを手で組み立てるコードは間違えやすい箇所です。SDKを使えばregionの値を替えるだけで済みます。
環境変数で切り替える構成
環境ごとにエンドポイントを変えたい場合は、regionをコードに埋めず環境変数から読む形が扱いやすくなります。次のスケッチは公式の呼び出しに環境変数の読み取りを足しただけの例で、推奨構成ではありません。
import os
from anthropic import AnthropicVertex
client = AnthropicVertex(
project_id=os.environ["GCP_PROJECT_ID"],
region=os.environ.get("CLAUDE_VERTEX_REGION", "global"),
)開発環境はglobal、データ所在地の要件がある本番だけeuにする、といった分け方がコード変更なしでできます。ただし、コードを変えずに済むのはregionだけです。モデルIDは、後述のとおりエンドポイントによって使えないものがあります。
10%の上乗せはどこに掛かるか
上乗せの対象は、マルチリージョンとリージョナルです。グローバルには掛かりません。リージョナルの上乗せは、専用リージョン容量のインフラコストの反映とされています。
対象モデルは、Sonnet 4.5、Haiku 4.5、Opus 4.5以降のモデルです。Sonnet 4、Opus 4.1およびそれ以前のモデルは、従来の料金体系のままです。
具体的な単価はGoogle Cloud側の料金ページ(Generative AI pricingのClaudeモデルの節)で決まります。Anthropic側の料金ページも、パートナー運営のクラウドでは請求元がクラウド事業者になるとして、そちらを見るよう案内しています。この記事では単価の数値を書きません。
見積もりの考え方は単純です。グローバルの単価を1として、マルチリージョンとリージョナルは1.1倍で計算します。データ所在地の要件のためにグローバルを外せない場合、月間のトークン費用が1割増える前提で予算を組むことになります。
リージョナルは新しいモデルに使えないことがある
見落としやすいのが、リージョナルで呼べるモデルの範囲です。リージョナルの呼び出し例には、次のコメントが付いています。
Specific regional endpoints support Claude Sonnet 4.6 and earlier; newer models use the global or multi-region endpoints
つまり、リージョナルエンドポイントで動くのはSonnet 4.6以前のモデルで、それより新しいモデルはグローバルかマルチリージョンを使う、という記述です。us-east5にclaude-opus-5-5を投げても通らない可能性があります。
この記述の帰結として、次の二点は確認が必要です。
- 新しいモデルでデータ所在地を地域単位で満たしたいなら、選べるのはマルチリージョン(
usかeu)になる - プロビジョンドスループットはリージョナルでしか使えないため、新しいモデルで予約容量を持てるかどうかは、公式の記述だけでは判断できない
どのモデルがどのリージョンで使えるかは、Model GardenでClaudeを検索するか、Google CloudのClaudeモデルのページで確認する案内があります。モデルの提供状況はリージョンごとに異なるためです。
デプロイ前に、使うモデルとリージョンの組み合わせで最小リクエストを1回通しておくと確実です。
import sys
from anthropic import AnthropicVertex
def probe(project_id: str, region: str, model: str) -> bool:
client = AnthropicVertex(project_id=project_id, region=region)
try:
client.messages.create(
model=model,
max_tokens=8,
messages=[{"role": "user", "content": "ping"}],
)
return True
except Exception as e: # 404 などの内容をそのまま見る
print(f"NG {region} {model}: {e}", file=sys.stderr)
return False
for region in ["global", "us", "eu", "us-east5"]:
print(region, probe("MY_PROJECT_ID", region, "claude-sonnet-5-5"))この関数は組み合わせの可否を確かめるための私家版の確認用スクリプトで、公式のサンプルではありません。max_tokensを小さくすれば、確認のコストはごくわずかです。
Vertex AIで使えない機能
エンドポイントの種類とは別に、Vertex AI経由そのものが対応しない機能があります。非対応リストは次のとおりです。
- 入力ソース: 画像・ドキュメントのURL指定、Files API
- サーバー側ツール: コード実行、Web fetch、advisor
- エージェント基盤: Agent Skills、MCPコネクタ、プログラマティックなツール呼び出し
- APIエンドポイント: Message Batches、Models、Admin、Compliance、Usage and Cost
- Claude Managed Agents
- サーバー側フォールバック(
fallbacksパラメータ)
一方、Messages API、プロンプトキャッシュ、拡張思考、ツール使用(Bash・Browser use・Computer use・Memory・Text editorの各ツールを含む)、Web検索ツール、引用、構造化出力は対応しています。
画像をURLで渡す実装は、そのままでは動きません。非対応の入力ソースにURL指定が含まれるため、画像はURLでなくデータそのものを渡す形に直す必要があります。ここは、直接契約のAPIから移す際に最初に当たりやすい差分です。
fallbacksが使えない点については、クライアント側のフォールバックパターンを使う案内があります。Vertex AIではサーバー側に任せられないので、呼び出し側で例外を受けて別のモデルやエンドポイントに投げ直す実装になります。BedrockとGoogle Cloudの機能差の全体は、ClaudeをBedrockとGoogle Cloudで使う — API機能の対応差を比較に表でまとめてあります。
コンテキスト長・ペイロード・ログ
1Mトークンのコンテキストウィンドウは、Claude Fable 5.1・Fable 5、Opus 5.5・Opus 5・Opus 4.8・Opus 4.7・Opus 4.6、Sonnet 5.5・Sonnet 5・Sonnet 4.6が対象です。Sonnet 4.5を含むそれ以外のモデルは200kトークンです。
リクエストのペイロードには30MBの上限があります。大きなドキュメントや多数の画像を送ると、トークン上限より先にこちらに当たることがあります。
ログについては、Vertex AIにリクエストとレスポンスのロギング機能があり、Anthropicは少なくとも30日のローリングでアクティビティを記録するよう推奨しています。このロギングを有効にしても、GoogleやAnthropicにコンテンツへのアクセス権が渡ることはないと公式は説明しています。データの取り扱い自体はGoogle Cloudの規定が適用されます。
どのエンドポイントを選ぶか
公式はグローバルを推奨しています。可用性が最大になり、上乗せもないためです。外す理由が出てくるのは、次のような場合です。
| 状況 | 候補 | 理由 |
|---|---|---|
| データ所在地に制約がなく、可用性を優先したい | 候補グローバル | 理由上乗せなし、容量のあるリージョンへ動的に振り分け |
| 米国内・EU内にデータ処理を収めたいが、可用性も欲しい | 候補マルチリージョン(us / eu) | 理由地域内で動的に振り分け。10%増 |
| 単一リージョンでの処理が要件、または厳格なコンプライアンス | 候補リージョナル | 理由指定リージョンを通る。ただし対応モデルはSonnet 4.6以前 |
| 予約容量(プロビジョンドスループット)が必要 | 候補リージョナル | 理由グローバルとマルチリージョンは従量課金のみ |
日本のチームで、Claudeを使える提供経路そのものを比べたい場合はClaudeを日本から使う提供経路が入口になります。この記事は、Vertex AIを選んだあとのエンドポイントの決め方に絞った内容です。
導入前に確かめる3点
- 使うモデルIDと
regionの組み合わせで、最小リクエストが通るか(上の確認用スクリプトで足りる) - 使う機能が非対応リストに入っていないか。とくに画像のURL指定、Files API、Message Batches、MCPコネクタ
- 請求はGoogle Cloudから来るため、単価はGoogle Cloudの料金ページで確認し、マルチリージョンとリージョナルには1.1倍を織り込むこと
まとめ
Vertex AIのClaudeは、AnthropicVertexのregionにglobal・usかeu・リージョン名のどれを渡すかで、エンドポイントの種類が決まります。グローバルは上乗せなしで可用性が高く、公式の推奨です。データ所在地の要件があるときにだけ、10%の上乗せを払ってマルチリージョンかリージョナルへ移ります。
新しいモデルはリージョナルに載らないことがあります。地域単位の要件があるなら、まずマルチリージョンが選べるかを確かめるのが近道です。