Execute funções através do emulador de funções

O Functions Emulator da CLI gcloud permite-lhe gerir instâncias locais das suas funções do Cloud Run através do comando gcloud alpha functions local. Isto permite-lhe implementar e testar as suas funções no sistema local antes de as implementar no Google Cloud ambiente.

O emulador de funções usa buildpacks da Google Cloud para agrupar o código da função em imagens de contentores executáveis localmente. Em seguida, executa estas imagens localmente com o Docker.

Pré-requisitos de instalação

Antes de continuar, certifique-se de que tem o seguinte instalado:

Implemente a sua função localmente

Para implementar a sua função localmente com o Functions Emulator, use o comando: gcloud functions

Node.js

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --no-gen2 \
    --runtime=nodejs20

Python

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=python312

Go

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --no-gen2 \
    --runtime=go121

Java

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --no-gen2 \
    --runtime=java17 

Ruby

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=ruby33

Substituição:

  • LOCAL_DEPLOYMENT_NAME: o nome com o qual está a implementar a sua função localmente.
  • ENTRY_POINT: o ponto de entrada da sua função.

Pode configurar ainda mais o comando de implementação com as seguintes flags opcionais:

Bandeira Descrição
--port A porta na qual ouvir pedidos (predefinição: 8080).
--builder O nome do criador de buildpacks a usar.

O valor --builder tem como predefinição o criador do App Engine para o idioma da sua função. Por exemplo, a predefinição é gcr.io/serverless-runtimes/google-22-full/builder/python para Python.

Quando usa o comando gcloud alpha pela primeira vez, o comando gcloud pede-lhe que instale o conjunto de comandos gcloud alpha.

Chame a sua função local

Para chamar a sua função local sem dados, use o seguinte comando:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME

Substitua LOCAL_DEPLOYMENT_NAME pelo nome com o qual quer implementar a função localmente.

Para incluir dados na chamada à sua função local, escolha o separador que corresponde ao seu tipo de função:

Função HTTP

Chame a sua função HTTP local da seguinte forma:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --data='{"message": "MESSAGE"}'

Substituição:

  • LOCAL_DEPLOYMENT_NAME: o nome para implementar localmente a sua função.
  • ENTRY_POINT: o ponto de entrada da sua função.
  • MESSAGE: uma string de texto a transmitir como o corpo do pedido HTTP.

Função CloudEvent

Para chamar a sua função CloudEvent local, tem de fornecer um objeto JSON que descreva o evento de acionador:CloudEvent

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --cloud-event="CLOUD_EVENT_JSON"

Substituição:

  • LOCAL_DEPLOYMENT_NAME: o nome para implementar localmente a sua função.
  • ENTRY_POINT: o ponto de entrada da sua função.
  • CLOUD_EVENT_JSON: uma string codificada em JSON no modo de conteúdo estruturado que descreve o evento de acionamento. Para ver mais detalhes e exemplos, consulte o artigo CloudEvents – Formato de evento JSON.

Segue-se um exemplo de uma linha de comandos:

gcloud alpha functions local call my-function --cloud-event='{
 "specversion" : "1.0",
  "type" : "com.github.pull.create",
  "source" : "https://github.com/cloudevents/spec/pull",
  "subject" : "123",
  "id" : "ce",
  "time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
  }'

Consulte as especificações do CloudEvent para mais informações sobre como o formato JSON é definido para CloudEvents.

Elimine a implementação da função local

Elimine a implementação da função local com o seguinte comando:

gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME

Substitua LOCAL_DEPLOYMENT_NAME pelo nome com o qual quer implementar localmente a sua função.

Este comando anula a implementação da função, mas não elimina o código da função.

Passos seguintes