Etapa 1: criar o serviço remoto (função AWS Lambda) no console de gerenciamento¶
Este tópico fornece instruções detalhadas para a criação de uma função AWS Lambda para uso como serviço remoto para sua função externa.
Este tópico inclui código para uma função Lambda de amostra que você pode usar sem modificações para criar sua primeira função externa, ou que você pode usar como ponto de partida para uma função Lambda personalizada.
Neste tópico:
Etapa anterior¶
Introdução¶
Há várias maneiras de criar um serviço remoto na AWS. Este tópico mostra uma maneira, que é criar uma função Lambda para ser usada como serviço remoto.
Este tutorial descreve dois exemplos de funções Lambda, cada uma escrita em Python.
Mais detalhes são fornecidos em Amostras de funções do Snowflake (neste tópico).
Compreensão da entrada e saída da função Lambda¶
Para que o Snowflake possa enviar e receber dados do seu serviço remoto, o serviço remoto deve aceitar e retornar os dados no formato JSON.
As informações não específicas de uma plataforma sobre entrada e saída de serviços remotos estão em Formatos de dados de entrada e saída de serviços remotos .
Esta seção fornece detalhes que são específicos para funções AWS Lambda.
Entrada e saída independente da linguagem via JSON¶
As informações desta seção se aplicam a todas as funções Lambda utilizadas como serviços remotos para funções externas do Snowflake. Para obter mais informações específicas de plataforma sobre entrada e saída de funções externas, consulte as subseções abaixo.
Na AWS, a convenção para um serviço compatível com HTTP é retornar o corpo dentro de um objeto JSON que também inclui o código de status HTTP. O JSON para um valor de retorno típico de uma função AWS Lambda é semelhante ao seguinte:
{ "statusCode": <http_status_code>, "body": { "data": [ [ 0, <value> ], [ 1, <value> ] ... ] } }
A estrutura da entrada JSON é semelhante à anterior, mas inclui pares chave-valor adicionais que você provavelmente não precisará, e exclui o statusCode
.
Entrada da função Lambda específica para Python¶
O material a seguir se aplica às funções Lambda na linguagem Python compatíveis com o Snowflake, incluindo a amostra das funções Lambda neste tutorial. Estas informações são uma adição às regras independentes da linguagem para entrada e saída.
Uma função Lambda na linguagem Python compatível com o Snowflake recebe dois parâmetros, event
e context
. Funções externas simples normalmente precisam apenas do parâmetro event
.
O parâmetro event
inclui muitos subcampos, um dos quais é body
. O corpo é uma cadeia de caracteres compatível com JSON que contém um dicionário.
O dicionário inclui uma chave chamada data
; o valor correspondente para data
é uma matriz. Essa matriz contém as linhas passadas pelo Snowflake.
Cada linha é representada por uma matriz que está aninhada dentro da matriz data
.
(Como o AWS Lambda processa convenientemente a solicitação HTTP POST enviada pelo Snowflake, extrai o corpo e passa o corpo dentro do parâmetro de evento, as funções de exemplo fornecidas pelo Snowflake não precisam analisar a solicitação HTTP POST inteira).
O Amostra de função Lambda síncrona inclui um código que mostra como ler o parâmetro event
.
Escolha do código para a função Lambda¶
Amostras de funções do Snowflake¶
O Snowflake fornece duas funções de amostra:
O exemplo mais curto é síncrono. Se você é iniciante em funções externas ou funções Lambda, o Snowflake recomenda que você use o código para criar sua primeira amostra de função externa.
Usuários experientes também podem copiá-lo e modificá-lo para usá-lo como ponto de partida para serviços remotos personalizados.
O código está disponível em amostra de função Lambda síncrona.
O outro exemplo é assíncrono.
Esta amostra é destinada principalmente para a construção de serviços remotos assíncronos personalizados.
O código está disponível em amostra de função Lambda assíncrona.
Função Lambda personalizada¶
Você pode escrever sua própria função Lambda do zero, ou pode usar uma das funções descritas em Amostras de funções do Snowflake (neste tópico) como um ponto de partida.
Se você tem um serviço remoto existente que deseja utilizar, então você pode pular a maioria das instruções nesta etapa do tutorial. Em vez disso, faça o seguinte:
Registre sua ID da conta AWS no campo
Your AWS Account ID
na planilha de rastreamento.Registre o nome da função Lambda do serviço remoto no campo
Lambda Function Name
na planilha de rastreamento.Vá para Etapa 2: criar o serviço de proxy (Amazon API Gateway) no console de gerenciamento da AWS.
Criar uma função Lambda¶
Para criar uma função AWS Lambda, siga as etapas abaixo.
Nota
Embora estas etapas mostrem como criar amostras de serviços remotos fornecidos pela Snowflake, você pode usar estas orientações como um modelo para criar seu próprio serviço remoto personalizado. Se você criar uma função Lambda personalizada, modifique os passos abaixo conforme apropriado (por exemplo, escolha a linguagem de programação apropriada para o código do seu serviço remoto).
Entre no Console de gerenciamento da AWS se ainda não tiver feito isso.
Se você ainda não tiver registrado sua ID da conta AWS no campo da planilha chamado
Your AWS Account ID
, registre-a agora.Se você precisar consultar sua ID da conta AWS, siga as instruções da AWS.
Selecione Lambda.
Selecione Create function.
Insira um nome para a função.
Registre esse nome no campo
Lambda Function Name
da planilha.Selecione a linguagem de programação a ser utilizada. Se você estiver usando uma das funções Python de amostra fornecidas pelo Snowflake, escolha Python 3.8.
Escolha ou crie uma função de execução para essa função.
Selecione as opções apropriadas, normalmente Create a new role with basic Lambda permissions.
(Esta função é separada da sua função de conta na nuvem e separada das suas funções no Snowflake).
Clique no botão Create Function.
Na guia lambda_function, insira o código para a função.
Se você ainda não escreveu sua própria função, você pode usar o seguinte exemplo fornecido pelo Snowflake:
Dica
Se você não conseguir colar na janela de edição, tente clicar duas vezes no nome do arquivo da função para habilitar a edição.
Clique no botão Deploy para implantar a função.
Testar a função Lambda¶
Clique na seta para baixo, ao lado do botão Test, e selecione Configure test event. No campo Event name, digite test.
Para a amostra de função síncrona em Python fornecida pelo Snowflake, use os seguintes dados de teste (substitua os dados padrão pelos dados abaixo):
{ "body": "{ \"data\": [ [ 0, 43, \"page\" ], [ 1, 42, \"life, the universe, and everything\" ] ] }" }
Clique em Create e depois clique em Test.
Os resultados de execução devem ser semelhantes a:
{ "statusCode": 200, "body": "{\"data\": [[0, [\"Echoing inputs:\", 43, \"page\"]], [1, [\"Echoing inputs:\", 42, \"life, the universe, and everything\"]]]}" }
Agora você tem uma função AWS Lambda que você pode usar como serviço remoto para sua função externa.
Próxima etapa¶
Etapa 2: criar o serviço de proxy (Amazon API Gateway) no console de gerenciamento da AWS