Planejamento de uma função externa para AWS¶
Este tópico ajuda você a se preparar para criar uma função externa para a AWS (Amazon Web Services) usando o Console de gerenciamento da AWS ou um modelo do AWS CloudFormation fornecido pelo Snowflake.
Neste tópico:
Pré-requisitos¶
Estas instruções consideram que você é um usuário experiente do Console de gerenciamento da AWS.
Você precisa de:
Uma conta com AWS, incluindo privilégios para:
Criar funções AWS via IAM (gerenciamento de identidade e acesso).
Criar funções AWS Lambda.
Criar um ponto de extremidade do API Gateway.
Uma conta Snowflake na qual você tem privilégios de ACCOUNTADMIN ou uma função com o privilégio CREATE INTEGRATION.
Se você planeja usar um ponto de extremidade privado, você precisa da sua ID de nuvem virtual privada (VPC). (Você deve usar uma ID de VPC, não uma ID de ponto de extremidade de VPC. IDs de ponto de extremidade de VPC podem mudar com o tempo).
Se você ainda não tem sua ID de VPC, você pode procurá-la executando o seguinte comando na interface da Web do Snowflake:
select system$get_snowflake_platform_info();
A saída deve ser semelhante ao seguinte:
{"snowflake-vpc-id":["vpc-12345678"]}
Registre a ID de VPC. Depois de decidir se deseja criar sua função externa utilizando o Console de gerenciamento da AWS ou um modelo AWS CloudFormation, copie a ID de VPC para a planilha de rastreamento apropriada:
Como escolher seu tipo de ponto de extremidade: ponto de extremidade regional vs. ponto de extremidade privado¶
Você acessa um serviço de proxy (como o Amazon API Gateway) por um URI, muitas vezes referido como um ponto de extremidade. As instruções para criar seu Amazon API Gateway pedem que você escolha um dos seguintes tipos de pontos de extremidade:
Um ponto de extremidade regional.
Um ponto de extremidade privado.
As informações a seguir podem ajudar você a escolher o tipo de ponto de extremidade.
Um ponto de extremidade regional pode ser acessado em várias regiões da AWS ou mesmo em diferentes plataformas de nuvem. Sua instância Snowflake, seu serviço de proxy e seu serviço remoto podem estar em regiões diferentes ou mesmo em plataformas de nuvem diferentes. Por exemplo, uma instância do Snowflake sendo executada no Azure pode enviar solicitações para um ponto de extremidade regional do Amazon API Gateway que, por sua vez, pode encaminhar os dados para um serviço remoto executado no GCP.
Um ponto de extremidade privado pode ser configurado para permitir o acesso somente dentro de uma região. Por exemplo, você pode configurar um ponto de extremidade privado para permitir o acesso apenas a partir de uma VPC (nuvem virtual privada) do Snowflake na mesma região da AWS. A comunicação entre uma VPC do Snowflake e um ponto de extremidade privado utiliza o AWS PrivateLink.
Para obter mais detalhes sobre os tipos de pontos de extremidade na AWS, consulte:
Se você quer usar um ponto de extremidade privado, mas não tem certeza de qual região está usando, você pode procurar sua região seguindo uma das opções:
Chamar a função SQL
CURRENT_REGION()
(por exemplo,SELECT CURRENT_REGION()
).Verificar o nome da sua conta Snowflake, que normalmente indica o provedor de nuvem e a região. Para obter mais informações sobre os nomes das contas, regiões e provedores de nuvem, consulte Regiões de nuvens com suporte.
Para utilizar um ponto de extremidade privado, sua conta deve atender os seguintes requisitos:
Edição Business Critical (ou superior) do Snowflake.
Escolha do método para criar a função externa¶
O Snowflake fornece instruções para duas maneiras de criar uma função externa na AWS:
Interface da Web do Console de gerenciamento da AWS
Modelo do AWS CloudFormation fornecido pelo Snowflake
Console de gerenciamento da AWS¶
Você pode usar o Console de gerenciamento da AWS para criar uma Função Lambda (como o serviço remoto) e uma instância do Amazon API Gateway (como serviço de proxy). Se você escolher este método, você também usa o Console de gerenciamento da AWS para definir as configurações relacionadas à segurança.
As instruções para criar uma função externa usando o Console de gerenciamento da AWS incluem uma amostra da Função Lambda e detalhes para criar uma instância básica do API Gateway:
Novos usuários podem usar as instruções com pouca ou nenhuma modificação.
Usuários experientes podem usar as instruções e a amostra da Função Lambda como ponto de partida para criar uma Função Lambda personalizada e uma configuração personalizada do API Gateway.
Modelo do AWS CloudFormation¶
O modelo do CloudFormation executa as duas etapas seguintes na criação de uma função externa:
Criação do serviço remoto (uma função AWS Lambda).
Criação e configuração do serviço de proxy (um Amazon API Gateway).
O modelo também:
Cria duas funções IAM (uma para a Função Lambda e outra para o API Gateway).
Configura uma política de recursos para o API Gateway.
Preparo para usar o Console de gerenciamento da AWS¶
Criar uma planilha para rastrear as informações necessárias¶
Ao criar sua função externa, você deve registrar informações específicas que você insere (por exemplo, a URL de invocação de recursos) para que você possa usar essas informações nas etapas subsequentes. A planilha abaixo ajuda a rastrear essas informações.
===========================================================================
================ Tracking Worksheet: AWS Management Console ===============
===========================================================================
****** Step 1: Information about the Lambda Function (remote service) *****
Your AWS Account ID: ______________________________________________________
Lambda Function Name: _____________________________________________________
******** Step 2: Information about the API Gateway (proxy Service) ********
New IAM Role Name: ________________________________________________________
New IAM Role ARN: _________________________________________________________
Snowflake VPC ID (optional): ______________________________________________
New API Name: _____________________________________________________________
API Gateway Resource Name: ________________________________________________
Resource Invocation URL: __________________________________________________
Method Request ARN: _______________________________________________________
*** Step 3: Information about the API Integration and External Function ***
API Integration Name: _____________________________________________________
API_AWS_IAM_USER_ARN: _____________________________________________________
API_AWS_EXTERNAL_ID: ______________________________________________________
External Function Name: ___________________________________________________
Preparo para usar o modelo do AWSCloudFormation¶
Baixar o modelo¶
O modelo está disponível para download no diretório de modelos de implantação no repositório do Snowflake em GitHub.
Criar uma planilha para rastrear as informações necessárias¶
Ao criar sua função externa, você deve registrar informações específicas que você insere (por exemplo, a URL de invocação de recursos) para que você possa usar essas informações nas etapas subsequentes. A planilha abaixo ajuda a rastrear essas informações.
===========================================================================
================== Tracking Worksheet: CloudFormation Template ============
===========================================================================
New IAM Role Name: ________________________________________________________
New IAM Role ARN: _________________________________________________________
Resource Invocation URL: __________________________________________________
API_AWS_IAM_USER_ARN: _____________________________________________________
API_AWS_EXTERNAL_ID: ______________________________________________________
Recursos adicionais para a construção de funções externas na AWS¶
Quando estiver tudo pronto para criar seu próprio serviço remoto para sua própria função externa, você pode conferir os exemplos de serviços remotos baseados nas Funções Lambda que estão disponíveis no Snowflake Labs.
Próxima etapa¶
- Console de gerenciamento da AWS:
Etapa 1: criar o serviço remoto (função AWS Lambda) no console de gerenciamento
- Modelo do AWS CloudFormation: