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>
Copy

Parâmetros obrigatórios

name

Cadeia de caracteres que especifica o identificador do gateway; deve ser exclusivo para o esquema no qual o gateway é criado.

FROM SPECIFICATION

Determina 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>
Copy

Parâmetros da especificação

type

Valor fixo. Deve ser definido como traffic_split.

split_type

Valor fixo. Deve ser definido como custom.

targets

Uma lista de pontos de extremidade de destino para os quais rotear o tráfego. Cada destino deve especificar:

type

Valor fixo. Deve ser definido como endpoint.

value

O nome do ponto de extremidade totalmente qualificado no formato db.schema.service!endpoint. Cada ponto de extremidade de destino deve existir.

weight

O 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 ALL_ENDPOINTS_USAGE para fornecer acesso.

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>;
Copy

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
$$;
Copy

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
$$;
Copy