ゲートウェイを使用して、イングレスリクエストを複数のエンドポイントにルーティングします。¶
複数のサービスエンドポイントを単一のホスト名で公開したい場合は、*ゲートウェイ*を作成できます。ゲートウェイは、パブリックサービスエンドポイントと似たホスト名を持ちます。パブリックサービスエンドポイントの詳細については、:ref:`label-working_with_services_jobs_ingress`を参照してください。
ゲートウェイは、:doc:`推論リクエスト</developer-guide/snowflake-ml/inference/real-time-inference-rest-api>`を含む:ref:`イングレスリクエスト<label-working_with_services_jobs_ingress>`を、Snowflakeの外部から1つ以上のサービスエンドポイントへルーティングします。ゲートウェイを使用すると、次を実行できます。
**サービス間でのトラフィック分割:**複数のサービスが同じホスト名を共有できるように設定できます。ルーティングは、各サービスに指定されたパーセンテージに基づいて行われます。これは、次のシナリオで役立ちます。
**A/Bテストシナリオ:**サービスを更新してデプロイし、元のサービスはそのまま稼働させ続けるという選択肢があります。テストのために、受信するイングレスリクエストの一定割合をテスト用に更新されたサービスにルーティングすることを選択できます。
**高可用性のシナリオ:**たとえば、2つのコンピューティングプールにまたがってデプロイされた高可用性サービスがあり、各コンピューティングプールは異なる:ref:`配置グループ<label-SPCS_working_with_compute_pool_placement_group>`に作成されているとします。この場合、ゲートウェイを使用して、受信するイングレスリクエストを分割することを選択できます。
**安定したURL:**各ゲートウェイには、作成時にホスト名が割り当てられています。ホスト名は、ゲートウェイオブジェクトの有効期間中は変更されません。ゲートウェイオブジェクトを変更して、異なるエンドポイントにルーティングしたり、異なる割合の構成を使用したりできます。変更は1分以内に有効になります。
次のリストは、サービスエンドポイントとゲートウェイの違いを示しています。
**ブラウザーのセキュリティ:**サービスエンドポイントは、外部アクセス統合を介したブラウザベースのアクセス向けに、CORS構成(corsSettings)とクラウドサービスプロバイダー(CSP)ヘッダーをサポートしています。ゲートウェイは現在、CORSまたはCSPヘッダーをサポートしていません。
**呼び出し元の権限:**サービスエンドポイントは、呼び出し元の権限をサポートしています。ゲートウェイは現在、呼び出し元の権限をサポートしていません。
**ロールベースのアクセス制御(RBAC):**サービスエンドポイントを使用する場合、アクセスは:ref:`サービスロール<label-spcs_manage_service_related_privileges_service_roles>`を使用して管理されます。ゲートウェイを使用する場合、アクセスはゲートウェイオブジェクトに対するUSAGE権限を付与することで管理されます。ゲートウェイにアクセスするユーザーは、基盤となるサービスエンドポイントのサービスロールを必要としません。
ゲートウェイルーティングは、指定された健全なエンドポイントの相対的な割合を尊重します。ゲートウェイのフェールオーバー動作の詳細については、 ゲートウェイのフェールオーバー動作 を参照してください。
次のセクションを確認したら、ゲートウェイを作成および変更できます。ゲートウェイの作成の詳細については、 CREATE GATEWAY をご参照ください。ゲートウェイの変更の詳細については、 ALTER GATEWAY をご参照ください。
アクセス制御の要件¶
ゲートウェイの所有者ロールには、次の権限が必要です。
権限 |
オブジェクト |
メモ |
|---|---|---|
CREATE GATEWAY |
スキーマ |
ゲートウェイの作成に必要です。 |
BIND SERVICE ENDPOINT |
アカウント |
サービスエンドポイントをゲートウェイにバインドするために必要です。 |
USAGE |
データベース |
ゲートウェイを含むデータベースにアクセスするために必要です。 |
USAGE |
スキーマ |
ゲートウェイを含むスキーマにアクセスするために必要です。 |
USAGE |
ターゲットエンドポイント |
ターゲットエンドポイントにトラフィックをルーティングするために必要です。 |
MODIFY または OWNERSHIP |
ゲートウェイ |
ゲートウェイの構成を変更するために必要です。 |
USAGE 、 MODIFY 、または OWNERSHIP |
ゲートウェイ |
ゲートウェイの仕様を表示するために必要です。 |
注釈
ゲートウェイをリストすると、SnowflakeはロールがUSAGE、MODIFY、またはOWNERSHIP権限を持つゲートウェイのみを表示します。使用されるロールには、ゲートウェイを含むデータベースおよびスキーマに対するUSAGE権限も必要です。
ゲートウェイのCREATE、ALTER、DROP操作については、 CREATE GATEWAY 、 ALTER GATEWAY 、 DROP GATEWAY をご参照ください。
構成¶
デフォルトでは、ゲートウェイごとに最大5つのエンドポイントを取得します。追加のエンドポイントについては、サポートに連絡して、トラフィックをより多くのエンドポイントに分割してください。
ゲートウェイのフェールオーバー動作¶
ゲートウェイのフェールオーバーは、エンドポイントAが使用できないか、非動作になった場合に、ゲートウェイが1つのエンドポイント(エンドポイントA)から他のエンドポイントにトラフィックを自動的にリダイレクトするプロセスです。
注釈
Snowflakeは、トラフィック分割が0%のエンドポイントではフェールオーバーしません。エンドポイントには、少なくとも1%のトラフィック分割が必要です。
利用可能なエンドポイントの相対的な割合が尊重されます。
次のいずれかの条件に該当する場合、1つのエンドポイント(エンドポイントA)から他のエンドポイントへのフェールオーバーが少なくとも1%の分割トラフィックで発生します。
エンドポイントAのサービスが一時停止し、
auto_resumeがfalseに設定されている。エンドポイントAのコンピューティングプールが一時停止している。
エンドポイントAのサービスが準備確認に失敗する。これは、最長で40秒(キャッシュリフレッシュレート)ごとに更新されます。更新時に、トラフィックは増分期間なしですぐに調整されます。
エンドポイントAのサービスがドロップされている。
ゲートウェイ所有者ロールがエンドポイントAに対する権限(USAGEまたはOWNERSHIP)を失う。