CREATE GATEWAY

在当前架构中创建新的 网关。网关支持跨多个服务端点拆分流量。

另请参阅:

ALTER GATEWAYDESCRIBE GATEWAYDROP GATEWAYSHOW GATEWAYS

语法

CREATE [ OR REPLACE ] GATEWAY [ IF NOT EXISTS ] <name>
  FROM SPECIFICATION <specification_text>
Copy

必填参数

name

指定网关标识符的字符串;对于在网关中创建任务的架构,必须是唯一的。

FROM SPECIFICATION

指定内联网关规范。该规范定义了流量拆分配置。

该规范使用以下格式:

spec:
  type: traffic_split
  split_type: custom
  targets:
  - type: endpoint
    value: <db>.<schema>.<service>!<endpoint>
    weight: <weight>
  - type: endpoint
    value: <db>.<schema>.<service>!<endpoint>
    weight: <weight>
Copy

规范参数

type

固定值。必须设置为 traffic_split

split_type

固定值。必须设置为 custom

targets

要将流量路由到的目标端点列表。每个目标必须指定:

type

固定值。必须设置为 endpoint

value

完全限定端点名称,格式为 db.schema.service!endpoint。每个目标端点都必须存在。

weight

此端点的流量权重,指定为整数。所有权重之和必须为 100。

备注

  • 默认情况下,每个网关的最大端点数为 5。

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE GATEWAY

架构

在架构中创建网关时需要。

BIND SERVICE ENDPOINT

账户

将服务端点绑定到网关时需要。

USAGE

数据库

对于包含网关的数据库是必需的。

USAGE

架构

对于包含网关的架构是必需的。

USAGE

服务端点

对于目标服务端点是必需的。授予服务角色 ALL_ENDPOINTS_USAGE 以提供访问权限。

要授予所需权限,请使用以下命令:

-- Grant CREATE GATEWAY privilege in the schema
GRANT CREATE GATEWAY ON SCHEMA <schema_name> TO ROLE <role_name>;

-- Grant BIND SERVICE ENDPOINT privilege on the account
GRANT BIND SERVICE ENDPOINT ON ACCOUNT TO ROLE <role_name>;

-- Grant USAGE on target endpoints via service role
GRANT SERVICE ROLE <db_name>.<schema_name>.<service_name>!ALL_ENDPOINTS_USAGE TO ROLE <role_name>;
Copy

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

创建在两个服务端点之间拆分流量的网关:

CREATE GATEWAY split_gateway
  FROM SPECIFICATION $$
spec:
  type: traffic_split
  split_type: custom
  targets:
  - type: endpoint
    value: db.schema.s2!ep1
    weight: 60
  - type: endpoint
    value: db.schema.s1!ep1
    weight: 40
$$;
Copy

使用新的流量拆分配置创建或替换网关:

CREATE OR REPLACE GATEWAY split_gateway
  FROM SPECIFICATION $$
spec:
  type: traffic_split
  split_type: custom
  targets:
  - type: endpoint
    value: db.schema.service1!endpoint1
    weight: 70
  - type: endpoint
    value: db.schema.service2!endpoint1
    weight: 30
$$;
Copy
语言: 中文