CREATE GATEWAY¶
在当前架构中创建新的 网关。网关支持跨多个服务端点拆分流量。
语法¶
CREATE [ OR REPLACE ] GATEWAY [ IF NOT EXISTS ] <name>
FROM SPECIFICATION <specification_text>
必填参数¶
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>
规范参数¶
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 |
服务端点 |
对于目标服务端点是必需的。授予服务角色 |
要授予所需权限,请使用以下命令:
-- 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>;
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
关于元数据:
注意
客户应确保在使用 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
$$;
使用新的流量拆分配置创建或替换网关:
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
$$;