Exemplos de acesso à rede externa¶
Este tópico fornece exemplos de acesso a locais de rede externos a partir de funções e procedimentos definidos pelo usuário.
Acesso ao PyPi para instalar pacotes no Snowpark Container¶
Você pode acessar o repositório de pacotes PyPi criando uma integração de acesso externo. Você pode fazer isso quando quiser permitir que os usuários do Notebook no Container Runtime instalem pacotes pip usando o comando pip install. Com esse tipo de integração, você também pode permitir que o Snowpark Container Services instale pacotes pip.
Este exemplo usa a regra de rede gerenciada pelo Snowflake snowflake.external_access.pypi_rule descrita em Privilégios e comandos.
Crie uma integração de acesso externo usando a regra de rede
snowflake.external_access.pypi_rule.Crie uma função
developerpara os usuários que precisam usar opip installem um Snowpark Container ou Notebook no Container Runtime.Conceda à função
developeros privilégios necessários para usar a integração de acesso externo que você criou.
Acessando a API do Google Tradutor com OAuth¶
As etapas a seguir incluem código para criar uma integração de acesso externo para acesso ao Google Translation API. As etapas adicionam a integração de segurança e as permissões necessárias para executar as instruções.
Crie uma regra de rede representando o local externo.
Para obter mais informações sobre a função de uma regra de rede no acesso externo, incluindo os privilégios exigidos, consulte Criação de uma regra de rede para representar o local da rede externa.
Crie uma integração de segurança para manter as credenciais OAuth necessárias para autenticação no local de rede externo especificado pela regra de rede
google_apis_network_rule.Para obter informações de referência sobre o comando, incluindo os privilégios exigidos, consulte CREATE SECURITY INTEGRATION (Autenticação de API externa).
Crie um segredo para representar as credenciais contidas na integração de segurança
google_translate_oauth.Para obter mais informações sobre a função do segredo no acesso externo, incluindo os privilégios exigidos, consulte Criação de um segredo para representar credenciais.
O segredo deve especificar um token de atualização com seu parâmetro OAUTH_REFRESH_TOKEN. Para obter um token de atualização do provedor de serviços (neste caso, do serviço Google Cloud Translation API), você pode usar um método oferecido pelo provedor ou usar as funções do sistema Snowflake.
Para criar um segredo com um token de atualização, use as funções do sistema Google OAuth Playground ou Snowflake, conforme descrito a seguir:
Funções do sistema do Snowflake
Execute CREATE SECRET para criar um segredo. Você irá atualizá-lo com o token de atualização em uma etapa posterior.
Execute a função SYSTEM$START_OAUTH_FLOW para recuperar um URL com o qual você pode obter um token de atualização, especificando como argumento o nome do segredo criado anteriormente.
A função gera um URL que você pode usar para concluir o processo de consentimento OAuth.
Em um navegador, visite o URL gerado e conclua o processo de consentimento do OAuth2. Ao terminar, deixe o navegador aberto na última página do processo.
Na barra de endereço do navegador, copie todo o texto após o ponto de interrogação no URL da última página do processo de consentimento.
Execute a função SYSTEM$FINISH_OAUTH_FLOW, especificando como argumento os parâmetros que você acabou de copiar da barra de endereços do navegador para atualizar o segredo com um token de atualização.
Certifique-se de executar SYSTEM$FINISH_OAUTH_FLOW na mesma sessão que SYSTEM$START_OAUTH_FLOW. SYSTEM$FINISH_OAUTH_FLOW atualiza o segredo que você especificou em SYSTEM$START_OAUTH_FLOW com o token de acesso e o token de atualização obtido do servidor OAuth.
Google OAuth Playground
No Google OAuth Playground, selecione e autorize a Cloud Translation API conforme especificado na etapa 1.
Na etapa 2, clique em exchange authorization code for tokens e copie o valor do token refresh token.
Execute CREATE SECRET para criar um segredo que especifique o valor do token de atualização que você copiou.
Para obter mais informações sobre a função de um segredo no acesso externo, incluindo os privilégios exigidos, consulte Criação de um segredo para representar credenciais.
Crie uma integração de acesso externo usando a regra e o segredo da rede.
Para obter mais informações sobre a função de uma integração de acesso externo, incluindo os privilégios exigidos, consulte Criação de uma integração de acesso externo.
Crie uma função
developerque será atribuída aos usuários que precisam criar uma UDF ou procedimento que use a integração.Conceda à função
developeros privilégios necessários para criar uma UDF que use os objetos para acesso externo. Isso inclui o seguinte:O privilégio READ no segredo.
O privilégio USAGE no esquema contendo o segredo.
O privilégio USAGE na integração.
Crie uma UDF
google_translate_pythonque traduza o texto especificado em uma frase no idioma especificado. Para obter mais informações, consulte Uso da integração de acesso externo em uma função ou procedimento.Conceda o privilégio USAGE na função
google_translate_pythonpara que aqueles com a funçãouserpossam chamá-la.Execute a função
google_translate_pythonpara traduzir uma frase.Isso gera a seguinte saída.
Acesso a uma função lambda externa com autenticação básica¶
As etapas a seguir incluem o código de exemplo para criar uma integração de acesso externo para acesso a uma função lambda externa ao Snowflake. O exemplo usa um espaço reservado para o próprio ponto de extremidade externo, mas poderia ser uma função disponível em um ponto de extremidade do servidor REST, por exemplo.
O acesso externo é utilizado em uma UDF vetorizada de Python que recebe um Pandas DataFrame contendo os dados.
Crie uma regra de rede
lambda_network_rulerepresentando o local externomy_external_service(aqui, um valor de espaço reservado para o local de um ponto de extremidade externo).Para obter mais informações sobre a função de uma regra de rede no acesso externo, consulte Criação de uma regra de rede para representar o local da rede externa.
Crie um segredo para representar as credenciais exigidas pelo serviço externo.
O código do manipulador posteriormente neste exemplo recupera as credenciais do segredo usando um Snowflake API para Python.
Para obter mais informações sobre a função do segredo no acesso externo, consulte Criação de um segredo para representar credenciais.
Crie uma função
developere conceda a ela os privilégios READ no segredo. Essa função será atribuída aos usuários que precisam criar uma UDF ou procedimento que use o segredo.Além disso, crie a função que os usuários usarão para chamar a função.
Conceda à função
developeros privilégios necessários para criar uma UDF que use os objetos para acesso externo. Isso inclui o seguinte:O privilégio READ no segredo.
O privilégio USAGE no esquema contendo o segredo.
Crie uma integração de acesso externo para especificar o ponto de extremidade externo e as credenciais por meio da regra e do segredo de rede que você criou.
Para obter mais informações sobre a função de uma integração de acesso externo, incluindo os privilégios exigidos, consulte Criação de uma integração de acesso externo.
Crie uma UDF vetorizada de Python
return_double_columnque acesse um local de rede externo para processar dados recebidos como um Pandas DataFrame.Para obter mais informações sobre como usar o acesso externo em uma UDF, consulte Uso da integração de acesso externo em uma função ou procedimento.
Conceda o privilégio USAGE na função
return_double_columnpara que aqueles com a funçãouserpossam chamá-la.Execute a função
return_double_column, fazendo uma solicitação ao ponto de extremidade externo.O código no exemplo a seguir cria uma tabela de duas colunas e insere 100.000.000 linhas contendo números inteiros de 4 bytes. O código então executa a função
return_double_column, passando valores da colunaapara processamento pelo ponto de extremidade externo.
Acesso ao Amazon S3 com AWSIAM¶
As etapas a seguir incluem código de exemplo para conectar-se a um bucket S3 AWS usando IAM.
Para mais informações sobre AWS IAM, consulte a documentação do AWS IAM.
Crie uma regra de rede,
aws_s3_network_rule, que represente o bucket S3 AWS no local especificado pelo parâmetro VALUE_LIST.Para obter mais informações sobre a função de uma regra de rede no acesso externo, consulte Criação de uma regra de rede para representar o local da rede externa.
Crie uma integração de segurança para manter as credenciais dos nomes de recursos da Amazon (ARN) AWS IAM necessárias para autenticação com o local de rede externo especificado pela regra de rede
aws_s3_network_rule.Para obter informações de referência sobre o comando, incluindo os privilégios exigidos, consulte CREATE SECURITY INTEGRATION (Autenticação AWS IAM).
Obtenha o ARN e ID para o IAM USER.
Execute o comando DESC na integração de segurança que você criou.
Na saída exibida, copie os valores das seguintes propriedades para usar na próxima etapa:
API_AWS_IAM_USER_ARN
API_AWS_EXTERNAL_ID
Conceda ao usuário IAM as permissões necessárias para acessar o bucket.
Use os valores ARN e ID ao configurar uma política de confiança, conforme descrito na Etapa 5 de Option 1: Configure a Snowflake storage integration to access Amazon S3.
Crie um segredo do tipo CLOUD_PROVIDER_TOKEN para representar as credenciais exigidas pelo serviço externo.
O código do manipulador mais adiante neste exemplo recupera as credenciais do segredo usando uma API Snowflake.
Para obter mais informações sobre a função do segredo no acesso externo, consulte Criação de um segredo para representar credenciais.
Crie uma função
developere conceda a ela os privilégios READ no segredo. Essa função será atribuída aos usuários que precisam criar uma UDF ou procedimento que use o segredo.Além disso, crie a função que os usuários usarão para chamar a função.
Conceda à função
developeros privilégios necessários para criar uma UDF que use os objetos para acesso externo. Isso inclui o seguinte:O privilégio READ no segredo.
O privilégio USAGE no esquema contendo o segredo.
Crie uma integração de acesso externo para especificar o ponto de extremidade externo e as credenciais por meio da regra de rede e do segredo que você criou.
Para obter mais informações sobre a função de uma integração de acesso externo, incluindo os privilégios exigidos, consulte Criação de uma integração de acesso externo.
Crie uma UDF que use a integração de acesso externo para se conectar ao bucket S3 da Amazon especificado na regra de rede que você criou.
O código do manipulador usa as APIs Snowflake para recuperar um token do segredo que você criou. A partir desse token, você pode usar as APIs Snowflake para recuperar os valores necessários para criar uma sessão para conexão com o Amazon S3, incluindo um ID de chave de acesso, uma chave de acesso secreta e um token de sessão.
Para obter mais informações sobre como usar o acesso externo em uma UDF, consulte Uso da integração de acesso externo em uma função ou procedimento.
Conceda o privilégio USAGE à UDF para que aqueles com a função
userpossam chamá-la.Execute a função para conectar ao ponto de extremidade externo.