Google Cloud の API Gateway は、トークン逐次出力や双方向セッション向けのストリームを Public Preview で扱える。ストリーム用に別経路を切り、認証や API キー、ログをゲートウェイ外に逃がしていた構成を、同一 OpenAPI 記述のまま寄せ直せる。
対応パターン:
- Server-Sent Events(SSE)
- HTTP/1.1 チャンク転送および HTTP/2 上の段階的レスポンス(NDJSON 等)
- WebSocket
- gRPC のサーバーストリームおよび双方向ストリーム
ストリームは最大 3,600 秒まで。長時間接続はクライアント側の再接続を前提にする。
OpenAPI 側にストリーミング専用の拡張や別スペックは不要。API キー強制、Firebase / Auth0 / Okta / Google ID トークン等の JWT 検証、バックエンド向けサービスアカウント認証、Cloud Logging / Cloud Monitoring、パステンプレートとルーティングは従来どおり。
有効化はゲートウェイ作成時のみ。gcloud api-gateway gateways create に --enable-streaming を付ける。ストリーミングモードは作成後に変更できない。既存ゲートウェイをその場で切り替える手段はない。
gcloud api-gateway gateways create GATEWAY_ID \
--api=API_ID \
--api-config=CONFIG_ID \
--location=REGION \
--enable-streamingGA 時点では opt-in なしの既定動作を予定。API 設定の変更は Preview 時と同様不要。
バックエンド向け x-google-backend.deadline はストリーム全体またはメッセージ間アイドル(プロトコル依存)を秒単位で上限づける。既定 15 秒は多くのストリームには短く、ストリーミング有効ゲートウェイでは最大 3,600 秒まで明示設定が必要。gRPC と WebSocket はバックエンド protocol をそれぞれ h2 と http/1.1 に合わせる。
既定ホスト名は GATEWAY_ID-PROJECT_NUMBER.REGION.gateway.dev の形で、作成前から URL をテンプレートできる。従来のランダムハッシュ付き gateway.dev ホスト名は廃止方向。
Public Preview 中の留意点:
- ストリーミングはゲートウェイ新規作成時のみ。既存リソースのインプレース変換は不可
- Serverless NEG 経由のカスタムドメイン、コンソールからの有効化、Terraform 対応は Preview 期間中に順次
- レイテンシメトリクスはストリーム存続時間を反映し、time-to-first-byte ではない
Model Router と組み合わせれば、OpenAI 互換エンドポイントから Gemini platform のモデルへ流しつつ、生成中のレスポンスをクライアントへ逐次返せる。