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 evento do GCF conhecidos e a assinatura de função. Em vez de usar nosso processo opinativo de processo de build e configurações de implantação, as funções do Cloud Run dão a você controle direto sobre o serviço subjacente criado no Cloud Run.
Com as funções do Cloud Run, fornecemos a UX simples da implantação de origem do Cloud Run, oferecendo aos desenvolvedores controle total sobre as cargas de trabalho usando as configurações do Cloud Run.
Este codelab usa amostras de nodejs nos exemplos abaixo. No entanto, é possível usar os exemplos de código de 2a geração do Cloud Functions na linguagem que preferir:
- Amostras de funções do Python (em inglês)
- Exemplos de funções do Nodejs
- Amostras de funções Go
- Amostras de funções Java (link em inglês)
- Amostras de funções PHP
- Amostras de função do Ruby
- Amostras de funções.NET (em inglês)
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 gcloud CLI
Primeiro, você precisa ter uma versão recente da gcloud CLI instalada. Atualize a CLI executando o seguinte comando:
gcloud components update
Configurar as variáveis de ambiente.
Você pode definir variáveis de ambiente que serão usadas neste 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 requer o uso das APIs a seguir. É possível ativar essas APIs executando 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 nele.
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 é possível implantar 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 sua função em uma imagem de contêiner pronta para produção.
Observações:
- a flag –source é usada para instruir o Cloud Run a criar a função em um serviço baseado em contêiner executável.
- A flag –function (novo) é 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 evitar que sua função seja invocável 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, você precisa enviar uma solicitação autenticada com o token de identidade ou o token de identidade de um princípio que tenha o papel 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 a leitura da documentação sobre as funções do Cloud Run.
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 por engano mais vezes do que sua alocação mensal de invocação 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 do Cloud em https://console.cloud.google.com/run e exclua o serviço crf-http-codelab
.
Se você optar por excluir o projeto inteiro, acesse https://console.cloud.google.com/cloud-resource-manager, selecione o projeto criado na etapa 2 e escolha "Excluir". Se você excluir o projeto, precisará alterar os projetos no SDK Cloud. Para conferir a lista de todos os projetos disponíveis, execute gcloud projects list
.