Chame funções locais
Configuração
Este documento pressupõe que
configurou uma função executada localmente no
localhost
através do Functions Framework
ou dos Buildpacks. Também pressupõe que instalou a ferramenta curl
na sua máquina local.
Enviar pedidos para funções locais
Pode acionar funções executadas localmente enviando-lhes pedidos HTTP encaminhados através de um processo de publicação local.
Determine onde a sua função está a ser executada localmente verificando o URL apresentado quando executou a função. Por predefinição, a sua função é alojada em localhost:8080
.
Funções HTTP
Quando testa a sua função HTTP a partir do ambiente de desenvolvimento, normalmente, esta fica à
escuta de pedidos em localhost:8080
. Esta interface só está acessível a partir da máquina ou da VM em que a sua função está a ser executada. Os pedidos enviados a partir de qualquer outro sistema não conseguem aceder à mesma. Por este motivo, tem de emitir o pedido HTTP a partir do mesmo sistema em que a sua função está a ser executada. Nos exemplos seguintes, se a sua função estiver a escutar numa porta diferente de 8080, substitua 8080 no exemplo pelo número da porta da sua função.
Testar funções HTTP com o Cloud Shell
Se estiver a usar o Cloud Shell para criar e testar a sua função, inicie-a localmente na janela do terminal do Cloud Shell e, em seguida, emita o pedido de acionador HTTP a partir de um navegador ou de uma instância curl
da seguinte forma:
Navegador
Clique no ícone na barra de ferramentas do Cloud Shell e escolha porta 8080 ou Alterar porta para escolher uma porta diferente. Esta ação abre uma janela do navegador no sistema correto e
envia um pedido GET para a porta indicada.
Curl
Para controlar o formato do seu pedido HTTP ou ver a resposta sem formatação,
use curl
:
- Clique no ícone + na barra de menu do Cloud Shell para abrir uma nova janela do terminal no mesmo sistema em que a sua função está a ser executada.
Nessa janela, execute o comando
curl
para acionar a sua função. Por exemplo:curl localhost:8080
Testar funções HTTP no servidor do computador
Se estiver a criar e executar a função no sistema de computador local, primeiro
inicie a função localmente e, em seguida, emita o pedido de acionador HTTP a partir de um navegador
ou de uma instância curl
da seguinte forma:
Navegador
Abra uma nova janela ou separador do navegador e escreva http://localhost:8080
na barra de endereço do navegador. Esta ação abre uma janela do navegador para localhost:8080
no servidor
do computador para acionar a sua função.
Curl
Abra uma nova janela de terminal no seu ambiente de trabalho local e, em seguida, execute o comando curl
nessa janela para acionar a sua função. Por exemplo:
curl localhost:8080
Isto executa o comando curl
especificado para acionar a sua função e apresenta a resposta não formatada.
Funções CloudEvent
Pode enviar eventos de amostra para as
funções CloudEvent
usando o curl
. Os pedidos curl
seguintes mostram como enviar exemplos de eventos 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
Pode enviar eventos de amostra para
funções em segundo plano
usando curl
. Os pedidos curl
seguintes mostram como enviar exemplos de eventos do
Cloud Pub/Sub e do
Cloud Storage para uma função em segundo plano executada 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" } }'