Conectividade privada do Azure para estágios externos e automação do Snowpipe¶
Este tópico fornece detalhes de configuração para definir a conectividade privada de saída para os seguintes recursos do Snowflake:
Carregamento em massa do Microsoft Azure usando um estágio externo.
Automação do Snowpipe para o armazenamento de blobs do Microsoft Azure
As diferenças entre configurar o carregamento em massa e a automação do Snowpipe para conectividade privada e configurá-los para o tráfego de rede pública consistem no seguinte:
Configuração de
USE_PRIVATELINK_ENDPOINT = TRUE
para a integração de armazenamento, o estágio ou a integração de notificação necessários.Criação de um ponto de extremidade de conectividade privada para o estágio externo (carregamento em massa e automação do Snowpipe).
Criação de um ponto de extremidade de conectividade privada para a integração de notificação (somente automação Snowpipe).
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 a mesma conta de armazenamento. Se quiser fazer isso, crie uma integração de armazenamento dedicada para a conectividade pública de saída e especifique USE_PRIVATELINK_ENDPOINT = FALSE
.
Propriedade de conectividade privada¶
A propriedade USE_PRIVATELINK_ENDPOINT
de uma integração de armazenamento ou estágio externo determina se ela é acessada por meio de conectividade privada ou atravessando a rede pública. Para usar a conectividade privada, defina USE_PRIVATELINK_ENDPOINT = TRUE
.
Um estágio que faz referência a uma integração de armazenamento que especifica USE_PRIVATELINK_ENDPOINT = TRUE
herda a configuração do ponto de extremidade privado. Como resultado, se você estiver usando uma integração de armazenamento configurada para usar conectividade privada, não precisará especificar a propriedade USE_PRIVATELINK_ENDPOINT
no estágio e não poderá modificar o estágio para definir a propriedade USE_PRIVATELINK_ENDPOINT
.
Configuração do acesso ao estágio externo¶
Essas etapas são exclusivas do uso da conectividade privada de saída com uma integração de armazenamento para descarregar dados em um estágio externo no Microsoft Azure. Você precisará modificar o fluxo se estiver usando a propriedade CREDENTIALS
do estágio em vez de fazer referência a uma integração de armazenamento.
Essas etapas são necessárias tanto para o carregamento em massa quanto para a automação do Snowpipe.
No Snowflake, chame a função de sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT para provisionar um ponto de extremidade de conectividade privada em sua VNet Snowflake para permitir que o Snowflake se conecte à sua conta de armazenamento de blobs externo usando conectividade privada:
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/cc2909f2-ed22-4c89-8e5d-bdc40e5eac26/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/storagedemo', 'mystorageaccount.blob.core.windows.net', 'blob' );
Essa função vincula o ponto de extremidade privado ao nome do host, o que permite que a integração de armazenamento use o ponto de extremidade privado para se conectar ao local de armazenamento.
No Portal do Azure e como proprietário do recurso de armazenamento de blobs Microsoft Azure, aprove o ponto de extremidade privado. Para mais detalhes, consulte o processo de aprovação.
No Snowflake, 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 conectividade privada (depois que os outros objetos Snowflake necessários estiverem habilitados para conectividade privada de saída).É possível continuar com as próximas etapas enquanto aguarda o status
"APPROVED"
.Crie uma integração de armazenamento e certifique-se de especificar a propriedade
USE_PRIVATELINK_ENDPOINT
:CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = AZURE AZURE_TENANT_ID = 'cc2909f2-ed22-4c89-8e5d-bdc40e5eac26' STORAGE_ALLOWED_LOCATIONS = ('azure://mystorageaccount.blob.core.windows.net/mycontainer/snowflake_privatelink_external_stage_test/') USE_PRIVATELINK_ENDPOINT = TRUE ENABLED = TRUE;
Crie um estágio externo que faça referência à integração de armazenamento:
CREATE OR REPLACE STAGE my_storage_private_stage URL = 'azure://mystorageaccount.blob.core.windows.net/mycontainer/snowflake_privatelink_external_stage_test/' STORAGE_INTEGRATION = outbound_private_link_int;
Depois que o ponto de extremidade privado tiver um status
"APPROVED"
, teste o descarregamento de dados Snowflake para o estágio externo:COPY INTO @my_storage_private_stage FROM mytable FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Visualize o resultado em seu estágio Microsoft Azure.
Atualização da sintaxe para integrações de notificação¶
A automação do Snowpipe para o armazenamento de blobs do Microsoft Azure exige que você crie uma integração de notificação. A atualização de sintaxe a seguir permite que você configure a integração de notificação para conectividade privada.
CREATE [ OR REPLACE ] NOTIFICATION INTEGRATION [ IF NOT EXISTS ] <name>
...
USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Configuração da automação do Snowpipe¶
Esta seção modifica os procedimentos descritos em Automação do Snowpipe para o armazenamento de blobs Microsoft Azure para destacar como implementar a automação do Snowpipe com conectividade privada. As únicas diferenças são o provisionamento de pontos de extremidade de conectividade privada e a configuração da propriedade USE_PRIVATELINK_ENDPOINT
da integração de armazenamento e da integração de notificação.
Crie uma integração e um estágio de armazenamento, juntamente com seu ponto de extremidade de conectividade privada dedicado, conforme descrito anteriormente neste documento.
Conceda ao Snowflake acesso aos locais de armazenamento, conforme descrito no tópico Automação do Snowpipe para o armazenamento de blobs do Microsoft Azure.
Configure a assinatura do Event Grid, conforme descrito no tópico Automação do Snowpipe para o armazenamento de blobs do Microsoft Azure.
No Snowflake, chame a função do sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT para provisionar um ponto de extremidade privado em sua VNet Snowflake para permitir que o Snowflake se conecte à sua fila do Azure usando conectividade privada:
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/cc2909f2-ed22-4c89-8e5d-bdc40e5eac26/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/mystorageaccount', 'mystorageaccount.queue.core.windows.net', 'queue' );
No Portal do Azure e como proprietário do recurso de armazenamento Microsoft Azure, aprove o ponto de extremidade privado. Para obter informações, consulte o processo de aprovação.
No Snowflake, 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 conectividade privada (depois que os outros objetos Snowflake necessários estiverem habilitados para conectividade privada de saída).Importante
É necessário aguardar até que o status seja
APPROVED
antes de continuar com a próxima etapa.Recupere o URL da fila de armazenamento e o ID de locatário, conforme descrito no tópico Automação do Snowpipe para o armazenamento de blobs do Microsoft Azure.
Crie uma integração de notificação e certifique-se de especificar a propriedade
USE_PRIVATELINK_ENDPOINT
:CREATE OR REPLACE NOTIFICATION INTEGRATION ni_pl ENABLED = TRUE TYPE = QUEUE NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE AZURE_STORAGE_QUEUE_PRIMARY_URI = "https://storageaccount.queue.core.windows.net/queuename" AZURE_TENANT_ID = '00000000-0000-0000-0000-000000000000' USE_PRIVATELINK_ENDPOINT = TRUE;
Conceda ao Snowflake acesso à fila de armazenamento, conforme descrito no tópico Automação do Snowpipe para o armazenamento de blobs do Microsoft Azure.
Crie um canal com a ingestão automática ativada, conforme descrito no tópico Automação do Snowpipe para o armazenamento de blobs do Microsoft Azure.
Desativação da conectividade privada¶
O processo de desativação da conectividade privada varia de acordo com o fato de o ponto de extremidade ter sido provisionado para uma integração de armazenamento, um estágio externo ou uma integração de notificação.
- Integração de armazenamento/estágio externo
Se você não precisar mais do ponto de extremidade de conectividade privada para o estágio externo, desmarque a propriedade
USE_PRIVATELINK_ENDPOINT
no estágio ou na integração de armazenamento e, em seguida, chame a função de sistema SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT.- Integração de notificação
Ao contrário das integrações de armazenamento e dos estágios externos, você não pode cancelar a definição da propriedade
USE_PRIVATELINK_ENDPOINT
de uma integração de notificação. Se você não precisar mais de conectividade privada, precisará abandonar a integração de notificação e criar uma nova. Após recriar a integração de notificação, é possível chamar a função de sistema SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT para desprovisionar o ponto de extremidade.