Sua primeira função: Python

Este guia explica o processo de criação de uma Cloud Function usando o ambiente de execução do Python. Há dois tipos de Cloud Functions:

  • Uma função HTTP, que você invoca a partir de solicitações HTTP padrão.
  • Uma função de segundo plano, usada para processar eventos da infraestrutura do Cloud, como mensagens em um tópico do Cloud Pub/Sub ou alterações em um intervalo do Cloud Storage.

O exemplo mostra como criar uma função HTTP simples.

Estrutura do guia

  1. Como criar um projeto do GCP usando o SDK do Cloud
  2. Como criar uma função
  3. Como especificar dependências
  4. Como implantar a função
  5. Como testar a função

Como criar um projeto do GCP usando o SDK do Cloud

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do GCP, na página do seletor de projetos, selecione ou crie um projeto do GCP.

    Acesse a página do seletor de projetos

  3. Verifique se o faturamento foi ativado no projeto do Google Cloud Platform. Saiba como confirmar que o faturamento está ativado para seu projeto.

  4. Ative a(s) Cloud Functions API necessária(s).

    Ativar a(s) API

  5. Instale e inicialize o SDK do Cloud.
  6. Atualize e instale os componentes gcloud:
    gcloud components update
  7. Precisa de um prompt de comando? Use o Google Cloud Shell. O Google Cloud Shell é um ambiente de linha de comando que já inclui o SDK do Google Cloud. Dessa maneira, você não precisa instalá-lo. O SDK do Google Cloud também vem pré-instalado em máquinas virtuais do Google Compute Engine.

  8. Prepare seu ambiente de desenvolvimento.

    Acessar o guia de configuração do Python

Como criar uma função

  1. Crie um diretório no seu sistema local para o código de função:

    Linux ou Mac OS X

    mkdir ~/gcf_hello_world
    cd ~/gcf_hello_world
    

    Windows

    mkdir %HOMEPATH%\gcf_hello_world
    cd %HOMEPATH%\gcf_hello_world
    
  2. Crie um arquivo main.py no diretório gcf_hello_world com o seguinte conteúdo:

    from flask import escape
    
    def hello_http(request):
        """HTTP Cloud Function.
        Args:
            request (flask.Request): The request object.
            <http://flask.pocoo.org/docs/1.0/api/#flask.Request>
        Returns:
            The response text, or any set of values that can be turned into a
            Response object using `make_response`
            <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>.
        """
        request_json = request.get_json(silent=True)
        request_args = request.args
    
        if request_json and 'name' in request_json:
            name = request_json['name']
        elif request_args and 'name' in request_args:
            name = request_args['name']
        else:
            name = 'World'
        return 'Hello {}!'.format(escape(name))

    Esse exemplo de função recebe um nome fornecido na solicitação HTTP e retorna uma saudação, ou "Hello World!", quando nenhum nome é fornecido.

Como especificar dependências

Dependências no Python são gerenciadas com pip e expressas em um arquivo de metadados chamado requirements.txt. O arquivo precisa estar no mesmo diretório que o arquivo main.py que contém o código da função.

  1. Crie um arquivo requirements.txt no diretório gcf_hello_world.

  2. Adicione a dependência da função, neste caso o pacote Flask, ao seu arquivo requirements.txt adicionando a seguinte linha:

    Flask==1.0.2
    

Como implantar a função

Para implantar a função com um acionador HTTP, execute o seguinte comando no diretório gcf_hello_world:

gcloud functions deploy hello_http --runtime python37 --trigger-http

Como testar a função

  1. Quando a implantação da função estiver concluída, anote a propriedade httpsTrigger.url ou encontre-a usando o seguinte comando:

    gcloud functions describe hello_http
    

    A aparência será semelhante a esta:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http
  2. Visite este URL no navegador. Você verá uma mensagem "Hello World!".

    Tente passar um nome na solicitação HTTP, por exemplo, usando este URL:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http?name=NAME

    Você verá uma mensagem "Hello NAME!"

Como visualizar registros

Como usar a ferramenta de linha de comando

Os registros do Cloud Functions são visíveis na IU do Stackdriver Logging e por meio da ferramenta de linha de comando gcloud.

Para ver os registros da função com a ferramenta gcloud, use o comando logs read, seguido pelo nome da função:

gcloud functions logs read hello_http

A saída será semelhante a esta:

LEVEL  NAME        EXECUTION_ID  TIME_UTC                 LOG
D      hello_http  pdb5ys2t022n  2019-09-18 23:29:09.791  Function execution started
D      hello_http  pdb5ys2t022n  2019-09-18 23:29:09.798  Function execution took 7 ms, finished with status code: 200

Como usar o painel do Logging

Você também pode ver os registros do Cloud Functions no Console do Cloud.