CREATE SERVICE¶
Cria um novo serviço Snowpark Container Services no esquema atual. Se já existir um serviço com esse nome, use o comando DROP SERVICE para excluir o serviço criado anteriormente.
Você pode executar mais de uma instância do seu serviço. Cada instância de serviço é uma coleção de contêineres, conforme definido no arquivo de especificação de serviço, que são executados juntos em um nó no seu pool de computação. Se você executar várias instâncias de um serviço, um balanceador de carga gerenciará o tráfego de entrada.
- Consulte também:
ALTER SERVICE , DESCRIBE SERVICE, DROP SERVICE , SHOW SERVICES
Sintaxe¶
CREATE SERVICE [ IF NOT EXISTS ] <name>
IN COMPUTE POOL <compute_pool_name>
{
FROM @<stage>
SPECIFICATION_FILE = '<yaml_file_stage_path>'
|
FROM SPECIFICATION <specification_text>
}
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <EAI_name> [ , ... ] ) ]
[ AUTO_RESUME = { TRUE | FALSE } ]
[ MIN_INSTANCES = <num> ]
[ MAX_INSTANCES = <num> ]
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '{string_literal}']
Parâmetros obrigatórios¶
name
Cadeia de caracteres que especifica o identificador (ou seja, o nome) do serviço; deve ser exclusivo para o esquema no qual o serviço é criado.
Nomes entre aspas para caracteres especiais ou nomes que diferenciam maiúsculas de minúsculas não são suportados. A mesma restrição também se aplica a nomes de bancos de dados e esquemas onde você cria um serviço. Ou seja, nomes de bancos de dados e esquemas sem aspas são válidos na criação de um serviço.
IN COMPUTE POOL compute_pool_name
Especifica o nome do pool de computação na sua conta no qual o serviço será executado.
FROM stage
Especifica o estágio interno do Snowflake onde o arquivo de especificação está armazenado; por exemplo,
@tutorial_stage
.SPECIFICATION_FILE = 'yaml_file_stage_path'
Especifica o caminho para o arquivo de especificação de serviço no estágio; por exemplo,
'some-dir/echo_spec.yaml'
.FROM SPECIFICATION specification_text
Especifica a especificação de serviço. Você pode usar um par de cifrões (
$$
) para delimitar o início e o fim da cadeia de caracteres de especificação.
Parâmetros opcionais¶
EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )
Especifica os nomes das integrações de acesso externo que permitem que seu serviço acesse sites externos. Os nomes nesta lista diferenciam maiúsculas de minúsculas. Por padrão, os contêineres de aplicativos não têm permissão para acessar a internet. Se você quiser permitir que seu serviço acesse um site externo, crie uma integração de acesso externo (EAI) e configure seu serviço para usar essa integração. Para obter mais informações, consulte Saída de rede.
AUTO_RESUME = { TRUE | FALSE }
Especifica se um serviço deve ser retomado automaticamente quando uma função de serviço ou entrada é chamada.
Se AUTO_RESUME for FALSE, você precisará retomar explicitamente o serviço (usando ALTER SERVICE … RESUME).
Se AUTO_RESUME for TRUE, o Snowflake retoma o serviço suspenso quando uma função de serviço é chamada ou quando uma solicitação é recebida (entrada).
MIN_INSTANCES = num
Especifica o número mínimo de instâncias de serviço a serem executadas.
Padrão: 1
MAX_INSTANCES = num
Especifica o número máximo de instâncias de serviço a serem executadas.
QUERY_WAREHOUSE = warehouse_name
Warehouse a ser usado se um contêiner de serviço se conectar ao Snowflake para executar uma consulta, mas não especificar explicitamente um warehouse a ser usado.
Padrão: nenhum.
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
Especifica o nome da tag e o valor da cadeia de caracteres dela.
O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.
Para obter informações sobre como especificar tags em uma instrução, consulte Cotas de tags para objetos e colunas.
COMMENT = 'string_literal'
Especifica um comentário para o serviço.
Padrão: sem valor
Requisitos de controle de acesso¶
Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:
Privilégio |
Objeto |
Notas |
---|---|---|
CREATE SERVICE |
Esquema |
|
USAGE |
Pool de computação |
|
READ |
Estágio |
Este é o estágio onde a especificação é armazenada. |
READ |
Repositório de imagens |
Repositório de imagens referenciadas pela especificação. |
BIND SERVICE ENDPOINT |
Conta |
Uma função deve ter esse privilégio para criar um serviço com pontos de extremidade públicos. Isso permite o acesso ao serviço através dos pontos de extremidade públicos. Se a função de proprietário do serviço perder este privilégio, os pontos de extremidade públicos não estarão acessíveis. |
Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.
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¶
Crie um serviço com duas instâncias de serviço em execução:
CREATE SERVICE echo_service
IN COMPUTE POOL tutorial_compute_pool
FROM @tutorial_stage
SPECIFICATION_FILE='echo_spec.yaml'
MIN_INSTANCES=2
MAX_INSTANCES=2