Crie e implemente uma função HTTP do Cloud Run usando o Go (1.ª geração)
Este guia explica o processo de escrita de uma função do Cloud Run usando o tempo de execução do Go. Existem dois tipos de funções do Cloud Run:
- Uma função HTTP, que invoca a partir de pedidos HTTP padrão.
- Uma função orientada por eventos, que usa para processar eventos da sua infraestrutura do Google Cloud, como mensagens num tópico Pub/Sub ou alterações num contentor do Cloud Storage.
O exemplo mostra como criar uma função HTTP simples.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Instale e inicialize a CLI gcloud.
- Atualize e instale os componentes do
gcloud
:gcloud components update
- Prepare o seu ambiente de desenvolvimento.
Crie um diretório no seu sistema local para o código da função:
Linux ou Mac OS X
mkdir ~/helloworld cd ~/helloworld
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
Crie um ficheiro denominado
hello_http.go
no diretóriohelloworld
com o seguinte conteúdo:Esta função de exemplo recebe um nome fornecido no pedido HTTP e devolve uma saudação ou "Olá, mundo!" quando não é fornecido nenhum nome.
Quando a implementação da função terminar, tome nota da propriedade
httpsTrigger.url
ou encontre-a através do seguinte comando:gcloud functions describe HelloHTTP
Deve ter esta forma:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP
Visite este URL no seu navegador ou use o cURL executando o comando:
curl https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP
Deverá ver a mensagem "Olá, mundo!". Experimente transmitir um nome no pedido HTTP executando o seguinte comando:
curl -X POST https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP -H "Content-Type:application/json" -d '{"name":"NAME"}'
Deve ver a mensagem "Olá,
NAME
!"
Crie uma função
Especifique dependências
Esta função de exemplo usa apenas pacotes da biblioteca padrão do Go, pelo que não precisa de declarar dependências além de importar os pacotes.
Para funções que requerem dependências fora da biblioteca padrão,
tem de fornecer as dependências através de um ficheiro go.mod
ou de um diretório vendor
. Para mais detalhes, leia o artigo
Especificar dependências em Go.
Implemente a função
Para implementar a função com um acionador HTTP, execute o seguinte comando no diretório helloworld
, especificando go113
ou go111
como o valor da flag --runtime
, consoante a versão que estiver a usar:
gcloud functions deploy HelloHTTP --no-gen2 --runtime go121 --trigger-http --allow-unauthenticated
A flag --allow-unauthenticated
permite-lhe aceder à função sem autenticação.
Para exigir a autenticação, omita a flag.
Teste a função
Ver registos
Os registos das funções do Cloud Run são visíveis através da CLI gcloud e na IU do Cloud Logging.
Use a ferramenta de linha de comandos
Para ver os registos da sua função com a CLI gcloud, use o comando
logs read
, seguido do nome da função:
gcloud functions logs read HelloHTTP
O resultado deve ser semelhante ao seguinte:
LEVEL NAME EXECUTION_ID TIME_UTC LOG D HelloHTTP buv9ej2k1a7r 2019-09-20 13:23:18.910 Function execution started D HelloHTTP buv9ej2k1a7r 2019-09-20 13:23:18.913 Function execution took 4 ms, finished with status code: 200
Use o painel de controlo de registo
Também pode ver os registos das funções do Cloud Run a partir da Google Cloud consola.