Conectividade privada com volumes externos para Amazon Web Services¶
Este tópico fornece os detalhes de configuração para definir a conectividade privada de saída para um volume externo no AWS. 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 de armazenamento em nuvem AWS passa pela rede interna AWS. 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
É possível usar o AWS PrivateLink 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 AWS PrivateLink 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.
Configurar a conectividade privada de saída com um volume externo¶
Para configurar a conectividade privada de saída com um volume externo, você pode usar o SQL ou usar o Snowsight.
Uso de SQL¶
Atualizações de sintaxe¶
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.
A nova sintaxe para CREATE EXTERNAL VOLUME e ALTER EXTERNAL VOLUME é a seguinte:
CREATE OR REPLACE EXTERNAL VOLUME <ext_volume_name>
STORAGE_LOCATIONS =
(
(
NAME = 'my-s3-loc'
STORAGE_PROVIDER = 's3'
STORAGE_BASE_URL = 's3://<bucket>[/<path>/]'
STORAGE_AWS_ROLE_ARN = '<iam_role>'
USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
)
)
ALLOW_WRITES=true;
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.
Configuração de acesso ao volume externo¶
Siga as etapas a seguir para usar a conectividade privada de saída e descarregar dados em um volume externo no AWS:
Chame a função do sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT para provisionar um ponto de extremidade privado em Snowflake VNet para permitir que o Snowflake se conecte ao armazenamento em nuvem externo AWS por meio de conectividade privada.
Conforme demonstrado no exemplo a seguir, é necessário usar um caractere curinga (
*) em vez de especificar um bucket S3 individual do AWS. O uso do curinga não significa que todos os buckets S3 sejam acessados por meio de uma conexão privada. Somente os buckets referenciados por um volume externo que tenha o parâmetro USE_PRIVATELINK_ENDPOINT ativado podem ser acessados por meio do ponto de extremidade.USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'com.amazonaws.us-west-2.s3', '*.s3.us-west-2.amazonaws.com');
Esta função vincula o ponto de extremidade privado ao nome de host, o que permite que o volume externo use o ponto de extremidade privado para se conectar ao local de armazenamento, desde que o AWS PrivateLink esteja ativado no objeto.
Chame a função SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Quando a saída da função 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".Crie o volume externo, certificando-se de definir a propriedade
USE_PRIVATELINK_ENDPOINTcomoTRUE. Por exemplo:CREATE EXTERNAL VOLUME external_volume STORAGE_LOCATIONS = ( ( NAME = 'my-s3-loc' STORAGE_PROVIDER = 's3' STORAGE_BASE_URL = 's3://bucketinuswest2/' STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::001234567890:role/myrole' 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 um status
"APPROVED", teste o descarregamento de dados Snowflake para o volume externo.
Uso de Snowsight¶
Para configurar o acesso ao volume externo usando a conectividade privada no Snowsight, siga estas etapas:
Chame a função do sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT para provisionar um ponto de extremidade privado em Snowflake VNet para permitir que o Snowflake se conecte ao armazenamento em nuvem externo AWS por meio de conectividade privada.
Conforme demonstrado no exemplo a seguir, é necessário usar um caractere curinga (
*) em vez de especificar um bucket S3 individual do AWS. O uso do curinga não significa que todos os buckets S3 sejam acessados por meio de uma conexão privada. Somente os buckets referenciados por um volume externo que tenha o parâmetro USE_PRIVATELINK_ENDPOINT ativado podem ser acessados por meio do ponto de extremidade.USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'com.amazonaws.us-west-2.s3', '*.s3.us-west-2.amazonaws.com');
Esta função vincula o ponto de extremidade privado ao nome de host, o que permite que o volume externo use o ponto de extremidade privado para se conectar ao local de armazenamento, desde que o AWS PrivateLink esteja ativado no objeto.
Chame a função SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.
Quando a saída da função 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 criar um volume externo para o S3 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 (Azure Private Endpoint).
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 um status
"APPROVED", teste o descarregamento de dados Snowflake para o volume externo.
Desprovisionamento de um ponto de extremidade¶
Se você não precisar mais do ponto de extremidade de conectividade privada para o volume externo, desmarque a propriedade USE_PRIVATELINK_ENDPOINT no volume externo e, em seguida, chame a função de sistema SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT.