Chamar funções locais
Instalação
Neste documento, consideramos que você configurou uma função executada localmente em localhost
usando o Functions Framework ou Buildpacks. Também presume que você
tenha instalado a ferramenta curl
na máquina local.
Como enviar solicitações às funções locais
É possível acionar funções em execução no local enviando a elas solicitações HTTP encaminhadas por um processo de exibição local.
Verifique onde a função está sendo executada localmente verificando o URL exibido
quando você começou a executar a função. Por
padrão, a função será hospedada em localhost:8080
.
Funções HTTP
Quando você testa a função HTTP no ambiente de desenvolvimento, ela normalmente
detecta solicitações em localhost:8080
. Essa interface só pode ser acessada por meio da
máquina ou VM em que a função está sendo executada. As solicitações enviadas de outros sistemas
não conseguem acessá-la. Por esse motivo, é necessário emitir a solicitação HTTP no
mesmo sistema em que a função está sendo executada. Nos exemplos a seguir, se a
função estiver fazendo detecções em uma porta diferente de 8080, substitua 8080 no
exemplo pelo número da porta da função.
Como testar funções HTTP com o Cloud Shell
Se você estiver usando o Cloud Shell para criar e testar sua função, inicie-a
localmente na janela do terminal do Cloud Shell e emita a solicitação de
gatilho HTTP de um navegador ou de uma instância curl
da seguinte maneira:
Navegador
Clique no ícone na barra de ferramentas do Cloud Shell e selecione porta 8080 ou Alterar porta para escolher uma porta diferente. Isso abre uma janela do navegador no sistema correto e emite uma solicitação GET para a porta indicada.
Curl
Para controlar o formato da solicitação HTTP ou ver a resposta não formatada,
use curl
:
- Clique no ícone + na barra de menus do Cloud Shell para abrir uma nova janela de terminal no mesmo sistema em que a função está sendo executada.
Nessa janela, execute o comando
curl
para acionar a função. Exemplo:curl localhost:8080
Como testar funções HTTP no servidor da área de trabalho
Se você estiver criando e executando a função no sistema da área de trabalho local, primeiro
inicie-a localmente e, em seguida, emita a solicitação de gatilho HTTP de um navegador
ou de uma instância curl
da seguinte maneira:
Navegador
Abra uma nova janela ou guia do navegador e digite http://localhost:8080
na
barra de endereço. Isso abre uma janela do navegador para localhost:8080
no
servidor da área de trabalho a fim de acionar a função.
Curl
Abra uma nova janela de terminal na área de trabalho local e execute o comando curl
nela para acionar a função. Exemplo:
curl localhost:8080
Isso executa o comando curl
especificado para acionar a função e exibe
a resposta não formatada.
Funções do CloudEvent
É possível enviar eventos de amostra para
Funções do CloudEvent
usando curl
. As seguintes solicitações curl
mostram como enviar eventos de amostra do
Cloud Pub/Sub e do
Cloud Storage para uma
função do CloudEvent em execução em localhost:8080
.
Pub/Sub
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.pubsub.topic.v1.messagePublished" \ -H "ce-source: //pubsub.googleapis.com/projects/MY-PROJECT/topics/MY-TOPIC" \ -d '{ "message": { "data": "d29ybGQ=", "attributes": { "attr1":"attr1-value" } }, "subscription": "projects/MY-PROJECT/subscriptions/MY-SUB" }'
Armazenamento
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.storage.object.v1.finalized" \ -H "ce-source: //storage.googleapis.com/projects/_/buckets/MY-BUCKET-NAME" \ -H "ce-subject: objects/MY_FILE.txt" \ -d '{ "bucket": "MY_BUCKET", "contentType": "text/plain", "kind": "storage#object", "md5Hash": "...", "metageneration": "1", "name": "MY_FILE.txt", "size": "352", "storageClass": "MULTI_REGIONAL", "timeCreated": "2020-04-23T07:38:57.230Z", "timeStorageClassUpdated": "2020-04-23T07:38:57.230Z", "updated": "2020-04-23T07:38:57.230Z" }'
Funções em segundo plano
É possível enviar eventos de amostra para
funções em segundo plano
usando curl
. As seguintes solicitações curl
mostram como enviar eventos de amostra do
Cloud Pub/Sub e do
Cloud Storage a uma
função de segundo plano em execução em localhost:8080
.
Pub/Sub
# 'world' base64-encoded is 'd29ybGQ=' curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -d '{ "context": { "eventId":"1144231683168617", "timestamp":"2020-05-06T07:33:34.556Z", "eventType":"google.pubsub.topic.publish", "resource":{ "service":"pubsub.googleapis.com", "name":"projects/sample-project/topics/gcf-test", "type":"type.googleapis.com/google.pubsub.v1.PubsubMessage" } }, "data": { "@type": "type.googleapis.com/google.pubsub.v1.PubsubMessage", "attributes": { "attr1":"attr1-value" }, "data": "d29ybGQ=" } }'
Armazenamento
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -d '{ "context": { "eventId": "1147091835525187", "timestamp": "2020-04-23T07:38:57.772Z", "eventType": "google.storage.object.finalize", "resource": { "service": "storage.googleapis.com", "name": "projects/_/buckets/MY_BUCKET/MY_FILE.txt", "type": "storage#object" } }, "data": { "bucket": "MY_BUCKET", "contentType": "text/plain", "kind": "storage#object", "md5Hash": "...", "metageneration": "1", "name": "MY_FILE.txt", "size": "352", "storageClass": "MULTI_REGIONAL", "timeCreated": "2020-04-23T07:38:57.230Z", "timeStorageClassUpdated": "2020-04-23T07:38:57.230Z", "updated": "2020-04-23T07:38:57.230Z" } }'