1. Introdução
Visão geral
As funções do Cloud Run são uma nova maneira de implantar cargas de trabalho usando os paradigmas de eventos e a assinatura de função do GCF. Em vez de usar nosso processo de build e configurações de implantação opinativos, o Cloud Run functions oferece controle direto sobre o serviço criado no Cloud Run.
Com o Cloud Run functions, oferecemos a UX simples da implantação de origem do Cloud Run, aos desenvolvedores controle total sobre as cargas de trabalho usando as configurações do Cloud Run.
Este codelab usa exemplos de nodejs nos exemplos abaixo. No entanto, é possível usar os exemplos de código do Cloud Functions da 2ª geração na linguagem de sua preferência:
- Exemplos de funções do Python
- Exemplos de funções do Node.js
- Exemplos de funções em Go
- Exemplos de funções Java
- Exemplos de funções PHP
- Exemplos de funções em Ruby
- Exemplos de funções do.NET
O que você vai aprender
- Como implantar uma função do Cloud Run acionada por uma solicitação HTTP
2. Definir variáveis de ambiente e ativar APIs
Fazer upgrade da CLI gcloud
Primeiro, você precisa ter uma versão recente da CLI gcloud instalada. Para atualizar a CLI, execute o seguinte comando:
gcloud components update
Configurar as variáveis de ambiente.
Você pode definir variáveis de ambiente que serão usadas ao longo deste codelab.
PROJECT_ID=<YOUR_PROJECT_ID> REGION=<YOUR_REGION, e.g. us-central1> gcloud config set project $PROJECT_ID SERVICE_NAME=crf-http-codelab
Ativar APIs
Antes de começar a usar este codelab, você precisa ativar várias APIs. Este codelab exige o uso das seguintes APIs. Para ativar essas APIs, execute o seguinte comando:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
storage.googleapis.com \
artifactregistry.googleapis.com
3. Criar uma função HTTP
Primeiro, crie um diretório para o código-fonte e use cd para acessar esse diretório.
mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_
Em seguida, crie um arquivo package.json com o seguinte conteúdo:
{
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
}
}
Em seguida, crie um arquivo index.js com o seguinte conteúdo:
const functions = require("@google-cloud/functions-framework");
functions.http("helloHttp", (req, res) => {
res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});
4. Implantar a função
Agora, implante a função do Cloud Run executando o seguinte comando:
gcloud beta run deploy $SERVICE_NAME \
--source . \
--function helloHttp \
--region us-central1 \
--no-allow-unauthenticated
Esse comando usa buildpacks para transformar o código-fonte da função em uma imagem de contêiner pronta para produção.
Observações:
- A flag "–source" é usada para informar ao Cloud Run que crie a função em um serviço baseado em contêiner executável.
- A flag "–function" (nova) é usada para definir o ponto de entrada do novo serviço como a assinatura da função que você quer invocar.
- (opcional) o –no-allow-unauthenticated para impedir que sua função seja invocada publicamente
5. Testar a função
Quando a implantação estiver concluída, o URL do serviço vai aparecer. Para invocar a função, envie uma solicitação autenticada com seu token de identidade ou o token de identidade de um principal que tenha o papel de invocador do Cloud Run, conforme mostrado abaixo:
# get the Service URL SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')" # invoke the service curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
6. Parabéns!
Parabéns por concluir o codelab!
Recomendamos que você consulte a documentação sobre o Cloud Run functions.
O que vimos
- Como implantar uma função do Cloud Run acionada por uma solicitação HTTP
7. Limpar
Para evitar cobranças acidentais, por exemplo, se os serviços do Cloud Run forem invocados mais vezes do que sua alocação mensal de invocações do Cloud Run no nível sem custo financeiro, exclua o Cloud Run ou o projeto criado na etapa 2.
Para excluir a função do Cloud Run, acesse o console do Cloud Run em https://console.cloud.google.com/run e exclua o serviço crf-http-codelab.
Se você quiser excluir todo o projeto, acesse https://console.cloud.google.com/cloud-resource-manager, selecione o projeto criado na Etapa 2 e escolha "Excluir". Se você excluir o projeto, vai precisar mudar de projeto no SDK Cloud. Para conferir a lista de todos os projetos disponíveis, execute gcloud projects list.