OpenAPI 3.x の機能の制限事項
このドキュメントでは、API Gateway で OpenAPI 3.x を使用する場合の機能制限について説明します。
サポートされている OpenAPI 仕様のバージョンの詳細については、OpenAPI の概要をご覧ください。
OpenAPI 3.x の新しい制限事項
このセクションでは、OpenAPI 3.x の新機能の制限事項について説明します。
サーバー
OpenAPI 3.x は、ホストとベースパスを定義する複数の server オブジェクトをサポートしています。ただし、API Gateway は、x-google-endpoint 拡張機能で識別される単一のサーバー オブジェクトに依存してサービスを構成します。
複数のサーバーを定義できますが、API Gateway は x-google-endpoint 拡張機能を含むサーバーのみを考慮し、そのようなサーバーを 1 つだけ許可します。API Gateway の場合、サーバー URL は必須ではありません。そのため、サーバーが定義されていないか、x-google-endpoint 拡張機能を持つサーバーが 1 つ存在します。
たとえば、次の定義は API Gateway で有効です。
servers:
- url: https://example.com
x-google-endpoint: {}
servers:
- url: https://example.com
x-google-endpoint: {}
- url: https://example2.com
次の定義は、複数の x-google-endpoint 拡張機能が含まれているため、無効です。
servers:
- url: https://example.com
x-google-endpoint: {}
- url: https://example2.com
x-google-endpoint: {}
次の定義は API Gateway で有効ですが、API Gateway はサーバー オブジェクトを無視します。
servers:
- url: https://example.com
複数のファイルにまたがるサーバー
複数の OpenAPI ファイルをアップロードし、1 つのファイルに x-google-endpoint 拡張子を持つサーバーが含まれている場合、すべてのファイルにも、同じ x-google-endpoint 拡張子とサーバー URL 内の同じホストで定義されたサーバーが含まれている必要があります。ベースパスはファイルによって異なる場合があります。
相対 URL
API Gateway では、仕様でホスト名が不要なため、servers オブジェクトの相対 URL は独自のベースパスとして扱われます。これは、OpenAPI 定義をホストするサーバーに対して相対 URL を解決する標準の OpenAPI の動作とは異なります。たとえば、API Gateway は url: /v1 をベースパスとして扱います。
ベースパスは「/」で始まる必要があります。API Gateway は、スキームがない URL、またはベースパスを示す「/」で始まる URL を拒否します。
サポートされていない拡張機能
API Gateway は、OpenAPI 3.x の x-google-allow 拡張機能をサポートしていません。
ファイルサイズの上限:
API Gateway では、アップロードされた OpenAPI 3.x ファイルに合計サイズの上限 10 MB とファイル数の上限 50 が適用されます。
既存の制限事項
このセクションでは、OpenAPI 2.0 から引き継がれ、OpenAPI 3.x にも適用される制限について説明します。
スコープが無視される
API Gateway は、セキュリティ スキーム オブジェクトでスコープが定義された OpenAPI ドキュメントを受け入れますが、API Gateway はこれらのスコープをチェックしたり適用したりしません。
複数のセキュリティ要件
- API キーの要件: スキームの 1 つが API キーである場合、API Gateway は択一的(論理 OR)セキュリティ要件をサポートしません。ただし、API Gateway は連結(論理 AND)をサポートしているため、API キーと OAuth2 トークンの両方を必須にできます。
- OAuth2 の要件: API Gateway は、さまざまな OAuth2 セキュリティ スキームの択一的(論理 OR)セキュリティ要件をサポートしています。追加のセキュリティ要件が API キーでない限り、API Gateway は連結(論理 AND)をサポートしていません。
- オプションのセキュリティ: 空のセキュリティ要件(
- {})を使用して、API キーのセキュリティをオプションにできますが、API Gateway は OAuth でこれをサポートしていません。
セキュリティ定義の検証
API Gateway は、securityDefinitions セクションに対応する定義のないセキュリティ要件を使用する OpenAPI 3.x 仕様を拒否します。
URL パス テンプレート
API Gateway は、パスセグメント全体を表す URL パス テンプレート パラメータ(/items/{itemId} など)のみをサポートします。API Gateway は、部分セグメントに対応するパラメータ(/items/prefix_{id}_suffix など)をサポートしておらず、拒否します。
パラメータ、スキーマ、リクエスト本文、型
API Gateway は、さまざまなパラメータと型の定義(required パラメータや配列形式など)を含む OpenAPI ドキュメントを受け入れますが、それらを適用しません。API Gateway は、これらの定義に関係なく、受信リクエストを API に転送します。
API Gateway は、リクエスト パラメータのプリミティブ型のみをサポートします。
外部型参照
API Gateway は、指定された OpenAPI ドキュメントの外部にある型への参照をサポートしていません。たとえば、API Gateway では、外部 URL を指す $ref は許可されず、拒否されます。
ホスト アドレスのカスタムポート
API Gateway では、OpenAPI ドキュメントの servers.url フィールドにカスタムポートを使用できません。
YAML エイリアスの制限事項
API Gateway に送信される OpenAPI ドキュメントには、最大 200 個の YAML エイリアス ノードを含めることができます。