Conectividade privada com volumes externos para Google Cloud¶
Este tópico descreve como configurar a conectividade privada de saída para um volume externo no Google Cloud Storage (GCS). A principal diferença entre a conectividade pública de saída e a conectividade privada de saída é como você define a propriedade USE_PRIVATELINK_ENDPOINT para o volume externo.
Quando o volume externo está configurado para usar a conectividade privada, sua conexão com o serviço Google Cloud Storage passa pela rede interna do Google Cloud. Ao configurar o volume externo para usar a conectividade privada de saída, você acrescenta segurança adicional às operações de descarregamento de dados, bloqueando o acesso público à conta de armazenamento.
Para obter mais informações sobre o uso de volumes externos para se conectar ao armazenamento em nuvem externo para tabelas Iceberg, consulte Configuração de um volume externo.
Nota
Você pode usar o Google Cloud Private Service Connect para acessar tabelas Iceberg gerenciadas pelo Snowflake e tabelas Iceberg que usam uma integração de catálogo para armazenamento de objetos. Além disso, você pode usar o Google Cloud Private Service Connect para acessar tabelas Iceberg gerenciadas externamente e criadas usando os arquivos Delta no armazenamento de objetos.
Custos de conectividade privada de saída¶
Você paga por cada ponto de extremidade de conectividade privada, juntamente com o total de dados processados. Para ver o preço desses itens, consulte a Tabela de consumo do serviço Snowflake.
Você pode explorar o custo desses itens filtrando os seguintes tipos de serviço ao consultar as exibições de faturamento nos esquemas ACCOUNT_USAGE e ORGANIZATION_USAGE:
OUTBOUND_PRIVATELINK_ENDPOINT
OUTBOUND_PRIVATELINK_DATA_PROCESSED
Por exemplo, você pode consultar a exibição USAGE_IN_CURRENCY_DAILY e filtrar por esses tipos de serviço.
Considerações¶
É possível configurar a conectividade pública de saída e a conectividade privada de saída para o mesmo serviço de armazenamento em nuvem. Se quiser fazer isso, crie um volume externo dedicado para a conectividade pública de saída e especifique USE_PRIVATELINK_ENDPOINT = FALSE.
Limitações¶
A conectividade privada de saída para volumes do Google Cloud Storage não aceita buckets multirregionais.
Configurar a conectividade privada de saída com um volume externo¶
Para configurar a conectividade privada de saída com um volume externo, você usa o SQL ou usa o Snowsight.
Uso de SQL¶
Especificar a conectividade privada para um volume externo¶
A propriedade USE_PRIVATELINK_ENDPOINT de um volume externo determina se ele é acessado por meio de conectividade privada ou atravessando a rede pública. Para usar a conectividade privada, defina USE_PRIVATELINK_ENDPOINT = TRUE ao criar ou modificar um volume externo, conforme mostrado nos exemplos a seguir.
Use a seguinte sintaxe para criar um volume externo:
CREATE OR REPLACE EXTERNAL VOLUME <ext_volume_name>
STORAGE_LOCATIONS =
(
(
NAME = 'my-gcs-loc'
STORAGE_PROVIDER = 'gcs'
STORAGE_BASE_URL = 'gcs://<bucket>/<prefix>/'
USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
)
)
ALLOW_WRITES=true;
Use a seguinte sintaxe para alterar um volume externo que já existe:
ALTER EXTERNAL VOLUME <ext_volume_name>
UPDATE STORAGE_LOCATION = '<storage_location_name>'
USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
O comando DESCRIBE EXTERNAL VOLUME inclui a propriedade USE_PRIVATELINK_ENDPOINT e seu valor.
Provisionar um ponto de extremidade privado¶
Siga as etapas a seguir para provisionar um ponto de extremidade privado para seu volume do Google Cloud Storage:
No Snowflake, chame a função de sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT. Forneça como argumentos um ponto de extremidade regional da API Storage e o nome do host. Por exemplo:
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'storage.us-east4.rep.googleapis.com', 'storage.us-east4.rep.googleapis.com');
Nota
O Snowflake oferece suporte apenas aos pontos de extremidade regionais da API Storage do Google Cloud. Os buckets multirregionais do|google-cloud| não são compatíveis.
Use SYSTEM$PROVISION_PRIVATELINK_ENDPOINT para provisionar um ponto de extremidade privado no Snowflake VNet para que o Snowflake possa se conectar ao Google Cloud Storage externo pela conectividade privada. Somente os buckets referenciados por um volume externo com a propriedade USE_PRIVATELINK_ENDPOINT ativada podem ser acessados usando o ponto de extremidade.
No Snowflake, chame a função SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Se a saída de SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO incluir
“status”: “APPROVED”, sua conexão do Snowflake com a conta de armazenamento poderá usar a conectividade privada.É possível continuar com as próximas etapas enquanto aguarda o status
"APPROVED".
Configuração de acesso ao volume externo¶
Siga as etapas a seguir para configurar a conectividade privada com seu volume de armazenamento externo:
Crie o volume externo e defina a propriedade USE_PRIVATELINK_ENDPOINT como TRUE. Por exemplo:
CREATE EXTERNAL VOLUME external_volume STORAGE_LOCATIONS = ( ( NAME = 'my-gcs-loc' STORAGE_PROVIDER = 'gcs' STORAGE_BASE_URL = 'gcs://<bucket>/<prefix>/' USE_PRIVATELINK_ENDPOINT = true ) ) ALLOW_WRITES=true;
Use o comando CREATE ICEBERG TABLE para criar uma tabela Iceberg que faça referência ao volume externo. Por exemplo:
CREATE ICEBERG TABLE rand_table (data STRING) BASE_LOCATION='table' EXTERNAL_VOLUME=external_volume CATALOG='snowflake';
Depois que o ponto de extremidade privado tiver o status APPROVED, teste o descarregamento de dados do Snowflake para o volume externo.
Uso de Snowsight¶
Para configurar o acesso ao volume externo usando a conectividade privada no Snowsight, siga estas etapas:
No Snowflake, chame a função de sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT. Forneça como argumentos um ponto de extremidade regional da API Storage e o nome do host. Por exemplo:
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'storage.us-east4.rep.googleapis.com', 'storage.us-east4.rep.googleapis.com');
Nota
O Snowflake oferece suporte apenas aos pontos de extremidade regionais da API Storage do Google Cloud. Os buckets multirregionais do|google-cloud| não são compatíveis.
Use SYSTEM$PROVISION_PRIVATELINK_ENDPOINT para provisionar um ponto de extremidade privado no Snowflake VNet para que o Snowflake possa se conectar ao Google Cloud Storage externo pela conectividade privada. Somente os buckets referenciados por um volume externo com a propriedade USE_PRIVATELINK_ENDPOINT ativada podem ser acessados usando o ponto de extremidade.
No Snowflake, chame a função SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Se a saída de SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO incluir
“status”: “APPROVED”, sua conexão do Snowflake com a conta de armazenamento poderá usar a conectividade privada.É possível continuar com as próximas etapas enquanto aguarda o status
"APPROVED".Siga as etapas para configurar um volume externo para o Google Cloud Storage usando o Snowsight e habilite a conectividade privada ao configurar o volume externo.
Importante
Para habilitar a conectividade privada, na página Configure external volume, no campo Connectivity, você deve selecionar Private (Private Service Connect).
Use o comando CREATE ICEBERG TABLE para criar uma tabela Iceberg que faça referência ao volume externo. Por exemplo:
CREATE ICEBERG TABLE rand_table (data STRING) BASE_LOCATION='table' EXTERNAL_VOLUME=external_volume CATALOG='snowflake';
Depois que o ponto de extremidade privado tiver o status APPROVED, teste o descarregamento de dados do Snowflake para o volume externo.
Desativação da conectividade privada¶
Se você não precisar mais de conectividade privada para o volume externo, poderá definir a propriedade USE_PRIVATELINK_ENDPOINT do volume como FALSEe, em seguida, chamar a função do sistema SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT para desprovisionar o ponto de extremidade. Por exemplo:
ALTER EXTERNAL VOLUME <ext_volume_name>
UPDATE STORAGE_LOCATION = '<storage_location_name>'
USE_PRIVATELINK_ENDPOINT = false;
SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('storage.us-east4.rep.googleapis.com');