CREATE GATEWAY¶
Cria um novo gateway no esquema atual. Um gateway permite a divisão do tráfego entre vários pontos de extremidade do servidor.
- Consulte também:
ALTER GATEWAY, DESCRIBE GATEWAY, DROP GATEWAY, SHOW GATEWAYS
Sintaxe¶
CREATE [ OR REPLACE ] GATEWAY [ IF NOT EXISTS ] <name>
FROM SPECIFICATION <specification_text>
Parâmetros obrigatórios¶
nameCadeia de caracteres que especifica o identificador do gateway; deve ser exclusivo para o esquema no qual o gateway é criado.
FROM SPECIFICATIONDetermina a especificação do gateway em linha. A especificação define a configuração de divisão do tráfego.
A especificação usa o seguinte formato:
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>
Parâmetros da especificação¶
typeValor fixo. Deve ser definido como
traffic_split.split_typeValor fixo. Deve ser definido como
custom.targetsUma lista de pontos de extremidade de destino para os quais rotear o tráfego. Cada destino deve especificar:
typeValor fixo. Deve ser definido como
endpoint.valueO nome do ponto de extremidade totalmente qualificado no formato
db.schema.service!endpoint. Cada ponto de extremidade de destino deve existir.weightO peso do tráfego para este ponto de extremidade, especificado como um número inteiro. Todos os pesos devem somar no máximo 100.
Nota
Por padrão, o número máximo de pontos de extremidade por gateway é 5.
Requisitos de controle de acesso¶
A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:
Privilégio |
Objeto |
Notas |
|---|---|---|
CREATE GATEWAY |
Esquema |
Necessário para criar um gateway no esquema. |
BIND SERVICE ENDPOINT |
Conta |
Necessário para vincular pontos de extremidade de serviço ao gateway. |
USAGE |
Banco de dados |
Necessário no banco de dados que contém o gateway. |
USAGE |
Esquema |
Necessário no esquema que contém o gateway. |
USAGE |
Pontos de extremidade de serviço |
Necessário nos pontos de extremidade de serviço de destino. Conceda a função de serviço |
Para conceder os privilégios necessários, use os seguintes comandos:
-- 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>;
Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.
Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.
Notas de uso¶
Em relação aos metadados:
Atenção
Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.
Exemplos¶
Criar um gateway que divide o tráfego entre dois pontos de extremidade de serviço:
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
$$;
Criar ou substituir um gateway por uma nova configuração de divisão de tráfego:
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
$$;