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
- Saiba como implementar uma função do Cloud Run no Google Cloud.