Executar o Functions usando o emulador do Functions
Com o emulador do Functions da CLI do Google Cloud, é possível gerenciar instâncias locais do Cloud Functions com o comando gcloud alpha functions local. Isso permite implantar e testar suas funções no sistema local antes de implantá-las no ambiente do Google Cloud.
Esse recurso funciona com funções de 1ª e 2ª geração.
O emulador do Functions usa buildpacks do Google Cloud para empacotar o código da função em imagens de contêiner executáveis localmente. Em seguida, você executa essas imagens localmente com o Docker.
Pré-requisitos de instalação
Antes de continuar, verifique se você tem os seguintes recursos instalados:
Implantar a função localmente
Para implantar a função localmente com o emulador de funções, use o
comando gcloud functions
:
Node.js
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --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 \ --runtime=go121
Java
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=java17
C#
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=dotnet6
Ruby
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=ruby32
PHP
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=php82
Substitua:
- LOCAL_DEPLOYMENT_NAME: o nome em que você está implantando localmente a função.
- ENTRY_POINT: o ponto de entrada da função.
É possível configurar ainda mais o comando de implantação com as seguintes flags opcionais:
Sinalização | Descrição |
---|---|
--port |
A porta em que as solicitações serão ouvidas (padrão: 8080 ). |
--builder |
O nome do builder de buildpack a ser usado. |
O valor --builder
assume como padrão o criador do App Engine para a
linguagem da sua função. Por exemplo, o padrão é gcr.io/gae-runtimes/buildpacks/google-gae-22/python/builder
para Python.
Quando você usar o comando gcloud alpha
pela primeira vez, o comando gcloud
solicitará que você instale o conjunto de comandos gcloud alpha.
Chamar a função local
Para chamar a função local sem dados, use o seguinte comando:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME
Substitua LOCAL_DEPLOYMENT_NAME pelo nome em que você quer implantar localmente sua função.
A fim de incluir dados na chamada para a função local, escolha a guia correspondente ao tipo de função:
Função HTTP
Chame a função HTTP local da seguinte maneira:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--data='{"message": "MESSAGE"}'
Substitua:
- LOCAL_DEPLOYMENT_NAME: o nome em que implantar localmente sua função.
- ENTRY_POINT: o ponto de entrada da função.
- MESSAGE: uma string de texto a ser transmitida como o corpo da solicitação HTTP.
Função CloudEvent
Para chamar a função local do CloudEvent, forneça um objeto JSON CloudEvent
que descreva o evento engatilhador:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--cloud-event="CLOUD_EVENT_JSON"
Substitua:
- LOCAL_DEPLOYMENT_NAME: o nome em que implantar localmente sua função.
- ENTRY_POINT: o ponto de entrada da função.
- CLOUD_EVENT_JSON: uma string JSON codificada no modo de conteúdo estruturado que descreve o evento de gatilho. Para mais detalhes e exemplos, consulte CloudEvents – formato de evento JSON.
Confira um exemplo de linha de comando:
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 o CloudEvents.
Excluir a implantação da função local
Exclua a implantação da função local com o seguinte comando:
gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME
Substitua LOCAL_DEPLOYMENT_NAME pelo nome em que a função será implantada localmente.
Esse comando cancela a implantação da função, mas não exclui o código dela.
Próximas etapas
- Saiba como Implantar uma função do Cloud no Google Cloud.