Etapa 1: criar o serviço remoto (Google Cloud Function) no Console

Este tópico fornece instruções detalhadas para a criação de uma Google Cloud Function para uso como serviço remoto para sua função externa.

Neste tópico:

Criar a Google Cloud Function

Crie a função seguindo as instruções do Google para criar uma Cloud Function.

Se você estiver criando a função usando a amostra da função em linguagem Python fornecida pelo Snowflake, escolha Python Quickstart; caso contrário, escolha o QuickStart apropriado com base na linguagem que você está usando.

Ao seguir as instruções do Google, certifique-se de fazer o seguinte:

  1. Especifique que o acionador da função é HTTP.

  2. Copie o acionador URL para o campo Cloud Function Trigger URL da sua planilha de rastreamento.

  3. Na seção Authentication, selecione Require authentication.

    As instruções do GCP dizem para selecionar Allow unauthenticated invocations. Isso é aceitável para funções de amostra, incluindo a função de amostra fornecida pelo Snowflake, mas a maioria dos sistemas de produção exige autenticação.

  4. Se Require HTTPS ainda não estiver habilitado, habilite-o.

  5. Clique em Save.

  6. Selecione um Runtime apropriado. Se você estiver criando a amostra da função Python fornecida pelo Snowflake, escolha o tempo de execução Python 3.7.

    Importante

    Selecione o valor Runtime antes de colar o código.

  7. Substitua o código padrão pelo código de amostra do Snowflake ou pelo seu próprio código personalizado. O código de amostra do Snowflake é fornecido em Amostra de Google Cloud Function síncrona (neste tópico).

  8. Certifique-se de que o Entry point corresponde ao nome da função (neste caso, echo).

Testar a Google Cloud Function

Após terminar de criar a Google Cloud Function, use a guia Testing no console para chamar a função e certificar-se de que ela funciona como esperado.

Para a amostra da função Python fornecida pelo Snowflake, use os seguintes dados de teste (substitua qualquer dado padrão na guia Testing pelos dados abaixo):

{ "data":
  [
    [ 0, 43, "page" ],
    [ 1, 42, "life, the universe, and everything" ]
  ]
}
Copy

Os resultados de execução devem ser semelhantes a:

{"data":
  [
    [0, [43, "page"] ],
    [1, [42, "life, the universe, and everything"] ]
  ]
}
Copy

Os resultados podem ser exibidos em um formato diferente do exemplo mostrado acima.

Se o teste for bem-sucedido, você terá uma Google Cloud Function que pode ser usada como serviço remoto para sua função externa.

Amostra de Google Cloud Function síncrona

Esse código de amostra combina os valores dos parâmetros de entrada em uma única lista (matriz) e retorna essa lista como um único valor do tipo SQL VARIANT. O código está escrito em Python 3.7.

Essa função aceita e retorna dados no mesmo formato (JSON) que o Snowflake envia e lê.

import json

HTTP_SUCCESS = 200
HTTP_FAILURE = 400

def echo(request):
    try:
        # The list of rows to return.
        return_value = []

        payload = request.get_json()
        rows = payload["data"]

        # For each input row
        for row in rows:
            # Include the row number.
            row_number = row[0]
            # Combine the value(s) in the row into a Python list that will be treated as an SQL VARIANT.
            row_value = row[1:]
            row_to_return = [row_number, row_value]
            return_value.append(row_to_return)

        json_compatible_string_to_return = json.dumps( { "data" : return_value } )
        return (json_compatible_string_to_return, HTTP_SUCCESS)

    except:
        return(request.data, HTTP_FAILURE)
Copy

Para obter mais informações sobre formatos de dados, consulte Formatos de dados de entrada e saída do serviço remoto .