1. Visão geral
Esta série de codelabs (tutoriais práticos e autoguiados) destina-se a ajudar os desenvolvedores a entender as várias opções disponíveis ao implantar aplicativos. Você vai aprender a usar a API Google Cloud Translation em um aplicativo da Web simples. Esse app pode ser executado localmente ou implantado em uma plataforma de computação sem servidor do Google Cloud (App Engine, Cloud Functions ou Cloud Run).
Você vai fazer este tutorial de JavaScript com Node.js usando o framework da Web Express.js. Você também vai aprender a acessar as APIs do Cloud nas nossas plataformas sem servidor. Todas as versões desse app são do repositório de código aberto"nebulous serverless", que inclui uma versão em Python do app e codelabs independentes. O repositório também hospeda apps semelhantes que mostram aos desenvolvedores como acessar APIs do Google não relacionadas ao Cloud nas nossas plataformas sem servidor.
Este codelab se concentra na implantação do app nas plataformas em negrito acima.
Você aprenderá como realizar as seguintes tarefas:
- Use as APIs do Cloud do Google, especificamente a API Cloud Translation (Advanced/v3).
- Executar um aplicativo da Web básico localmente ou implantar em uma plataforma de computação sem servidor na nuvem
O que é necessário
- Um projeto do Google Cloud com uma conta do Cloud Billing ativa
- Um framework da Web instalado para execução local ( Flask para quem está fazendo o tutorial do Python ou Express para quem está fazendo o tutorial do JavaScript/Node.js)
- Pelo menos uma plataforma de computação sem servidor ativada para implantações do Google Cloud
- Noções básicas de programação (Python ou JavaScript/Node.js)
- Conhecimento prático dos comandos básicos do sistema operacional
Pesquisa
Como você usará este tutorial?
Como você classificaria sua experiência de desenvolvimento em Python ou Node.js?
Como você classificaria sua experiência de uso dos serviços do Google Cloud?
2. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.



- O Nome do projeto é o nome de exibição para os participantes do projeto. Ele é uma string de caracteres que não é usada pelas APIs do Google e pode ser atualizada a qualquer momento.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser alterado após a definição. O Console do Cloud gera automaticamente uma string única, geralmente não importa o que seja. Na maioria dos codelabs, você precisará fazer referência ao ID do projeto, que geralmente é identificado como
PROJECT_ID. Então, se você não gostar dele, gere outro ID aleatório ou crie um próprio e veja se ele está disponível. Em seguida, ele fica "congelado" depois que o projeto é criado. - Há um terceiro valor, um Número de projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, você precisará ativar o faturamento no Console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para encerrar os recursos e não gerar cobranças além deste tutorial, siga as instruções de "limpeza" encontradas no final do codelab. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
3. Ativar a API Translation
Nesta seção, você vai aprender a ativar as APIs do Google em geral. Para nosso app de exemplo, ative a API Cloud Translation. Você também vai ativar o App Engine, o Cloud Functions e/ou o Cloud Run (além do Cloud Artifact Registry), dependendo das plataformas em que você quer implantar o app de exemplo.
Como ativar as APIs do Google
Introdução
Independente da API do Google que você quer usar no aplicativo, elas precisam estar ativadas. As APIs podem ser ativadas na linha de comando ou no console do Cloud. O processo de ativação de APIs é idêntico. Portanto, depois de ativar uma, você pode fazer outra da mesma forma.
Opção 1:gcloud interface de linha de comando (Cloud Shell ou ambiente local)
Embora seja mais comum ativar APIs no console do Cloud, alguns desenvolvedores preferem fazer tudo na linha de comando. Para isso, procure o "nome do serviço" de uma API. Ele parece um URL: SERVICE_NAME.googleapis.com. Você pode encontrar essas informações no gráfico de produtos compatíveis ou fazer uma consulta programática com a API Google Discovery.
Com essas informações, use o Cloud Shell (ou seu ambiente de desenvolvimento local com a ferramenta de linha de comando gcloud instalada) para ativar uma API da seguinte maneira:
gcloud services enable SERVICE_NAME.googleapis.com
Exemplo 1:ativar a API Cloud Vision
gcloud services enable vision.googleapis.com
Exemplo 2:ativar o Google App Engine
gcloud services enable appengine.googleapis.com
Exemplo 3:ative várias APIs com uma solicitação. Por exemplo, se este codelab tiver espectadores implantando um app usando a API Cloud Translation no App Engine, no Cloud Functions e no Cloud Run, a linha de comando será:
gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Esse comando ativa o App Engine, o Cloud Functions, o Cloud Run e a API Cloud Translation. Além disso, ele ativa o Cloud Artifact Registry, porque é lá que as imagens de contêiner precisam ser registradas pelo sistema de build do Cloud Build para serem implantadas no Cloud Run.
Opção 2: Console do Cloud
Você também pode ativar as APIs do Google no Gerenciador de API. No console do Cloud, acesse o Gerenciador de APIs e selecione Biblioteca.

Comece a digitar o nome de uma API na barra de pesquisa para conferir os resultados correspondentes:

Selecione a API que você quer ativar e clique no botão Ativar:

O processo de ativação de todas as APIs é semelhante, independente da API do Google que você quer usar.
Custo
Muitas APIs do Google podem ser usadas sem taxas, mas há custos ao usar a maioria dos produtos e APIs do Google Cloud. Ao ativar as APIs do Cloud, você pode precisar informar uma conta de faturamento ativa. No entanto, alguns produtos do Google Cloud têm um nível"Sempre sem custo financeiro" que você precisa exceder para incorrer em cobranças de faturamento.
Os novos usuários do GCP se qualificam para a avaliação sem custos, atualmente de US $300, válida pelos primeiros 90 dias. Os codelabs geralmente não geram muito ou nenhum faturamento. Por isso, sugerimos que você espere até estar realmente pronto para testar o período de teste sem custos financeiros, principalmente porque é uma oferta única. As cotas do nível sem custo financeiro não expiram e são válidas mesmo que você use ou não o teste sem custo financeiro.
Os usuários precisam consultar as informações de preços de qualquer API antes de ativar (por exemplo, a página Preços da API Cloud Vision ), principalmente para saber se ela tem um nível sem custo financeiro e, em caso afirmativo, qual é. Desde que você permaneça dentro dos limites diários ou mensais especificados no total, não haverá cobranças. Os preços e os níveis sem custo financeiro variam entre as APIs de grupo de produtos do Google. Exemplos:
- Google Cloud/GCP: cada produto é faturado de maneira diferente e geralmente é pago por uso. Consulte as informações do Nível sem custo financeiro acima.
- Google Maps: oferece um conjunto de APIs e um crédito mensal sem custo financeiro de US$200.
- APIs do Google Workspace (antigo G Suite): oferecem uso (até determinados limites) coberto por uma taxa de assinatura mensal do Workspace. Portanto, não há cobrança direta para o uso de APIs em aplicativos como Gmail, Google Drive, Agenda, Documentos, Planilhas ou Apresentações.
Diferentes produtos do Google são cobrados de maneira diferente. Portanto, consulte a documentação apropriada para obter essa informação.
Verificar se os serviços desejados estão ativados
Verifique se a API Cloud Translation está no Gerenciador de APIs, conforme indicado acima. Se você não ativou as plataformas sem servidor na linha de comando, faça isso nos respectivos painéis no console do Cloud: App Engine, Cloud Functions e Cloud Run.
Embora seja visualmente informativo ativar APIs no Console do Cloud, é mais rápido usar a ferramenta gcloud, que leva segundos para ativar todos os serviços:
$ gcloud services enable appengine.googleapis.com \ cloudfunctions.googleapis.com artifactregistry.googleapis.com \ run.googleapis.com translate.googleapis.com Operation "operations/acf.p2-xxxxxx035451-704918f2-5470-4436-9bdd-c3b204yyyyyy" finished successfully.
Mais sobre custos
A seção acima sobre custos é geral em todas as APIs do Google. Vamos abordar mais detalhes neste tutorial. Embora a cota mensal não esteja listada na página de resumo geral do nível "Sempre sem custo financeiro", a página de preços da API Translation afirma que todos os usuários recebem uma quantidade fixa de caracteres traduzidos por mês. Você não vai receber cobranças da API se ficar abaixo desse limite. Para mais informações sobre custos usando plataformas sem servidor do Google Cloud, consulte a seção "Custos" do repositório. A seção "Limpeza" no final vai explicar como parar de gerar cobranças após a conclusão deste codelab.
4. Acessar o código do app de exemplo
Fazer o download do ZIP ou clonar o repositório
- Faça o download do arquivo ZIP ou clone o repositório com
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git - Se você não tiver um ambiente de desenvolvimento local e quiser fazer este tutorial no Cloud Shell, clone o repositório com o mesmo comando
git clone. - Você também pode acessar o arquivo ZIP no botão verde Code, conforme mostrado na captura de tela a seguir:

Agora que você tem tudo, crie uma cópia completa da pasta para fazer este tutorial específico, porque provavelmente será necessário excluir ou mudar os arquivos. Se quiser fazer uma implantação diferente, copie a original para não precisar clonar ou baixar de novo.
5. Confirmar o ambiente do Node.js
Para configurar o ambiente do Node.js, faça o seguinte:
- Verifique se você tem as versões atuais do Node (>=10) e do NPM (>=6) instaladas.
- Acesse o local em que você clonou o repositório (ou descompactou o arquivo ZIP) e vá para a pasta
cloud/nodejs. - Confirme se
package.jsonestá presente e executenpm install
Para o item 1 acima, verifique as versões que você tem na linha de comando:
$ node -v v17.0.1 $ npm -v 8.1.0
6. Tour pelo app de exemplo
O app de exemplo é um derivado simples do Google Tradutor que pede aos usuários para inserir texto em inglês e receber a tradução equivalente em espanhol.
O arquivo de configuração package.json indica quais pacotes de terceiros são necessários para o aplicativo. As versões dos pacotes podem ser atualizadas além do que está listado aqui:
{
"name": "cloud-nebulous-serverless-nodejs",
"version": "0.0.1",
"description": "Nebulous Serverless sample app",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "mocha test/test_neb.js"
},
"author": "Google LLC",
"license": "Apache-2.0",
"dependencies": {
"@google-cloud/translate": "^6.3.1",
"express": "^4.17.1",
"nunjucks": "^3.2.3"
},
"devDependencies": {
"mocha": "^9.1.3",
"supertest": "^6.1.6"
}
}
Agora abra o arquivo index.js para ver como ele funciona. Omitindo as linhas comentadas sobre licenciamento, a parte de cima e de baixo fica assim:
const express = require('express');
const nunjucks = require('nunjucks');
const {TranslationServiceClient} = require('@google-cloud/translate');
const app = express();
app.use(express.urlencoded({extended: true}));
nunjucks.configure('templates', {autoescape: true, express: app});
const TRANSLATE = new TranslationServiceClient();
const PORT = process.env.PORT || 8080;
const SOURCE = ['en', 'English'];
const TARGET = ['es', 'Spanish'];
let parent;
TRANSLATE.getProjectId().then(result => {
parent = `projects/${result}`;
});
if (!process.env.FUNCTION_TARGET) {
app.listen(PORT, () =>
console.log(`Listening on port ${PORT}`)
);
}
# . . . [translate() function definition] . . .
app.all('/', translate);
module.exports = {
app
};
- Os
requires trazem funcionalidade de framework e criação de modelos, além da biblioteca de cliente da API Cloud Translation. - As variáveis globais representam o web app, o ID do projeto na nuvem, o cliente da API Translation, o "caminho do local" principal para chamadas da API Translation e os idiomas
SOURCEeTARGET. Nesse caso, é inglês (en) e espanhol (es), mas você pode mudar esses valores para outros códigos de idioma compatíveis com a API Cloud Translation. - O primeiro elemento de cada par (
SOURCEeTARGET) é o código do idioma, enquanto o segundo é o nome do idioma (usado apenas para fins de exibição, já que é irrelevante para a API). - As poucas linhas na parte de baixo servem para enviar todas as solicitações HTTP para
translate()e exportar o objeto do aplicativoapp.
Por fim, no meio de index.js está o coração do aplicativo, a função translate():
async function translate(req, rsp) {
let text = null;
let translated = null;
if (req.method === 'POST') {
text = req.body.text.trim();
if (text) {
const data = {
contents: [text],
parent: parent,
targetLanguageCode: TARGET[0]
};
const [response] = await TRANSLATE.translateText(data);
translated = response.translations[0].translatedText;
}
}
const context = {
orig: {text: text, lc: SOURCE},
trans: {text: translated, lc: TARGET}
};
rsp.render('index.html', context);
}
A função principal recebe a entrada do usuário e chama a API Translation para fazer o trabalho pesado. Vamos aos detalhes:
- Redefina as variáveis básicas do formulário. Isso é principalmente para solicitações GET, já que as solicitações POST têm dados que substituem esses.
- Se for um POST, extraia o texto a ser traduzido e, se não estiver vazio, crie uma estrutura JSON representando o requisito de metadados da API. Em seguida, chame a API para o serviço.
- Não transmitimos
SOURCE[0]à API para uma fonte específica em inglês. Quando você omite o idioma de origem, está pedindo que a API detecte automaticamente o idioma de origem (consultesourceLanguageCodena documentação). - De qualquer forma, formate os resultados reais (POST) ou a ausência de dados (GET) no contexto do modelo e renderize.
A parte visual do aplicativo está no arquivo de modelo index.html. Ele mostra os resultados traduzidos anteriormente (em branco, caso contrário), seguidos pelo formulário pedindo algo para traduzir:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<style>
body {
font-family: Verdana, Helvetica, sans-serif;
background-color: #DDDDDD;
}
</style>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
No restante do tutorial, você pode escolher qualquer uma ou todas as quatro opções para implantar e executar esse app. Todas as implantações são opcionais, ou seja, você pode fazer qualquer uma ou todas elas.
- Executar o serviço localmente
- Implantar no App Engine (ambiente padrão)
- Como implantar no Cloud Functions
- Implantar no Cloud Run
7. OPÇÃO 1: executar o serviço localmente
Esta seção do codelab é apenas para execução local. Se você estiver fazendo a implantação apenas na nuvem, vá para a próxima seção.
Para executar o app de exemplo localmente, siga estas três etapas distintas:
- Criar uma conta de serviço
- Criar um par de chaves pública/privada de conta de serviço
- Baixar o arquivo de credenciais e o pacote com o código do aplicativo
- Iniciar o serviço
Saiba mais sobre contas de serviço
As contas de serviço são o mecanismo de segurança para acessar as APIs do Google em aplicativos baseados na nuvem ao acessar dados que não pertencem a usuários humanos. Ao implantar na nuvem, para reduzir o tempo de aceleração da integração de usuários, todas as plataformas de computação do Google Cloud (sem servidor e outras) fornecem contas de serviço padrão.
As contas de serviço padrão vêm com um amplo conjunto de permissões para "cortar a burocracia", mas, ao se preparar para lançar um serviço de produção, recomendamos que os usuários sigam a prática recomendada de "privilégios mínimos", criando contas de serviço gerenciadas pelo usuário com permissões suficientes para que o app funcione corretamente. De qualquer forma, não há contas de serviço padrão para implantações locais. Portanto, é necessário criar uma conta de serviço e uma chave de conta de serviço (um par de chaves públicas/privadas) e disponibilizar essas credenciais para o código do aplicativo.
Criar um par de chaves de conta de serviço e fazer o download do arquivo de credenciais
Siga as instruções nesta página para criar uma conta de serviço e um par de chaves pública/privada para execução local. Ao criar a chave da conta de serviço, você vai precisar fornecer as permissões desejadas. Selecione roles/cloudtranslate.user para acessar a API.
Depois que o par de chaves for criado, você vai receber uma solicitação para fazer o download do arquivo de chave da conta de serviço. Chame-o de credentials.json e mova para a pasta de nível superior do aplicativo. Agora você precisa informar ao SDK Cloud para usar essas credenciais: defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS para apontar para esse arquivo. Saiba mais sobre esse processo nesta página, que aborda o uso de contas de serviço.
Iniciar o serviço
Quando estiver tudo pronto, inicie o servidor Express localmente com o seguinte comando:
$ npm start > cloud-nebulous-serverless-nodejs@0.0.1 start > node index.js Listening on port 8080
Acesse o navegador da Web para se conectar em localhost:8080. Você vai ver algo assim:

Traduza algo para ver como funciona!

Quando estiver satisfeito, encerre o servidor com ^C (control-C) e saia. Parabéns por executar uma implantação local. A boa notícia é que a implantação na nuvem é muito mais fácil.
Solução de problemas
Você está recebendo um erro como este ao pedir uma tradução?
node:fs:2486
handleErrorFromBinding(ctx);
^
Error: The file at credentials.json does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/tmp/nodejs/credentials.json'
. . .
SOLUÇÃO: esse erro significa que você não concluiu a criação de uma conta de serviço e o download do arquivo de par de chaves pública/privada credentials.json. Volte para "OPÇÃO 1: executar o serviço localmente" e conclua esse processo e instale as credenciais na pasta principal antes de continuar.
8. OPÇÃO 2: implantação no App Engine (ambiente padrão)
Esta seção do codelab é apenas para implantação no Node App Engine. Se não tiver interesse, passe para a próxima seção.
Essa implantação usa o arquivo de configuração app.yaml, que informa ao App Engine qual ambiente de execução usar com uma única linha:
runtime: nodejs16
O arquivo app.yaml não é usado pelo Cloud Functions nem pelo Cloud Run. Se você não planeja usar o App Engine, esse arquivo pode ser excluído com segurança. Quando estiver tudo pronto para implantar no App Engine, execute este comando:
$ gcloud app deploy
Depois que uma região é selecionada, a saída gcloud app deploy fica muito menos detalhada e tem esta aparência:
Services to deploy: descriptor: [/private/tmp/nodejs/app.yaml] source: [/private/tmp/nodejs] target project: [PROJECT_ID] target service: [default] target version: [2021...] target url: [https://PROJECT_ID.REG_ABBR.appspot.com] target service account: [App Engine default service account] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 2 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...⠏WARNING: *** Improve build performance by generating and committing package-lock.json. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REG_ABBR.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse To take a quick anonymous survey, run: $ gcloud survey
Agora que seu app está disponível no mundo todo, é possível acessá-lo no URL que contém o ID do projeto. Você vai ver uma saída semelhante à versão local do Express, mas saiba que ela está sendo executada na nuvem e disponível no mundo todo:

Se você enviar uma solicitação, ela vai funcionar da mesma forma que todas as outras implantações.
9. OPÇÃO 3: implantação no Cloud Functions
Esta seção do codelab é apenas para implantação no Node Cloud Functions. Se não tiver interesse, passe para a próxima seção.
Não há arquivos de configuração com o Cloud Functions. Portanto, quando você estiver pronto para implantar no Cloud Functions, execute este comando:
$ gcloud functions deploy translate \ --runtime nodejs16 \ --entry-point app \ --trigger-http \ --region REGION \ --allow-unauthenticated
Seu projeto do GCP pode ter um REGION padrão, mas é possível usar a flag --region para implantar a função em uma região específica. O Cloud Functions não solicita informações como outros produtos do Cloud. Não importa qual região você escolha, a saída de gcloud functions deploy será semelhante a esta:
Deploying function (may take a while - up to 2 minutes)...⠛ For Cloud Build Logs, visit: https://console.cloud.google.com/cloud-build/builds;region=REGION/15ac7fc1-731d-4f3b-bc15-8f2614xxxxxx?project=062269xxxxxx Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 buildId: aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx buildName: projects/062269xxxxxx/locations/REGION/builds/aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx entryPoint: app httpsTrigger: securityLevel: SECURE_OPTIONAL url: https://REGION-PROJECT_ID.cloudfunctions.net/translate ingressSettings: ALLOW_ALL labels: deployment-tool: cli-gcloud name: projects/PROJECT_ID/locations/REGION/functions/translate runtime: nodejs16 serviceAccountEmail: PROJECT_ID@appspot.gserviceaccount.com sourceUploadUrl: https://storage.googleapis.com/gcf-upload-REGION-01de94c2-6eb4-4c49-aaff-09276cdb7ae9/a1db9f2d-3511-414b-aeeb-de6042xxxxxx.zip status: ACTIVE timeout: 60s updateTime: '2021...' versionId: '...'
Agora que seu app está disponível no mundo todo, você pode acessá-lo no URL que contém o ID do projeto, conforme mostrado na saída da implantação (em "httpsTrigger/url"). O URL deve ser algo como: https://REGION-PROJECT_ID.cloudfunctions.net/translate, que varia de acordo com a região selecionada e o ID do projeto na nuvem.

10. OPÇÃO 4: implantar no Cloud Run
Esta seção do codelab é apenas para implantação no Cloud Run. Se não tiver interesse, passe para a próxima seção.
Não há arquivos de configuração com o Cloud Run. Portanto, quando você estiver pronto para implantar no Cloud Run, siga as instruções abaixo.
Agora você pode implantar o serviço de tradução no Cloud Run executando este comando:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
A saída será semelhante a esta e vai fornecer algumas sugestões para as próximas etapas:
Please specify a region: [1] asia-east1 [2] asia-east2 . . . (other regions) . . . [28] us-west4 [29] cancel Please enter your numeric choice: REGION_CHOICE To make this the default region, run `gcloud config set run/region REGION`. Deploying from source requires an Artifact Registry repository to store build artifacts. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)? This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]" Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION] ✓ Building and deploying... Done. ✓ Creating Container Repository... ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b 9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
O Cloud Buildpacks contentoriza seus apps para o Cloud Run da mesma forma que você faria se executasse o app localmente. Para usuários do Node.js, ele executa npm install e npm start. Para Python, ele executa pip install -r requirements.txt e inicia o app com base nas instruções do Procfile. O mesmo vale para todos os outros idiomas compatíveis com os buildpacks do Cloud. O app vai estar pronto quando o processo de build for concluído.
O app é implantado regionalmente, mas fica disponível globalmente. Ele pode ser acessado no URL que contém o ID do projeto, conforme mostrado na saída da implantação (em "Service URL:"

Traduza algo para ver como funciona!

11. Conclusão
Parabéns! Você aprendeu a ativar e usar a API Cloud Translation, receber as credenciais necessárias e implantar um app da Web simples no Express localmente, no App Engine, no Cloud Functions e/ou no Cloud Run. Confira a pasta do repositório para saber mais ou acessar outras versões deste app e outros codelabs.
Limpar
Com a API Cloud Translation, é possível traduzir um número fixo de caracteres por mês sem custos financeiros. O App Engine também tem uma cota sem custo financeiro, assim como o Cloud Functions e o Cloud Run. Você vai receber cobranças se exceder qualquer um deles. Se você planeja continuar para o próximo codelab, não é necessário desligar o app.
No entanto, se você ainda não estiver pronto para passar para o próximo tutorial ou estiver preocupado com a possibilidade de a Internet descobrir o app que acabou de implantar, desative o app do App Engine, exclua a função do Cloud ou desative o serviço do Cloud Run para evitar cobranças. Quando estiver pronto para passar para o próximo codelab, você poderá reativá-lo. Por outro lado, se você não quiser continuar com este aplicativo ou outros Codelabs e quiser excluir tudo completamente, poderá desligar seu projeto.
Além disso, a implantação em uma plataforma de computação sem servidor do Google Cloud gera custos mínimos de build e armazenamento. O Cloud Build e o Cloud Storage têm cotas sem custo financeiro próprias. Para maior transparência, o Cloud Build cria a imagem do aplicativo, que é armazenada no Cloud Container Registry ou no Artifact Registry, o sucessor dele. O armazenamento dessa imagem usa parte dessa cota, assim como a saída de rede ao transferir a imagem para o serviço. No entanto, talvez você more em uma região que não tem um nível sem custo financeiro. Por isso, fique de olho no uso do armazenamento para minimizar possíveis custos.
12. Outros recursos
Nas seções a seguir, você encontra material de leitura adicional e exercícios recomendados para aumentar o conhecimento adquirido ao concluir este tutorial.
Outros estudos
Agora que você já tem alguma experiência com a API Translation, vamos fazer mais alguns exercícios para desenvolver ainda mais suas habilidades. Para continuar seu programa de aprendizado, modifique nosso app de exemplo para fazer o seguinte:
- Conclua todas as outras edições deste codelab para execução local ou implantação nas plataformas de computação sem servidor do Google Cloud (consulte o README do repositório).
- Conclua este tutorial usando outra linguagem de programação.
- Mude esse aplicativo para oferecer suporte a diferentes idiomas de origem ou de destino.
- Faça upgrade deste aplicativo para traduzir texto em mais de um idioma. Mude o arquivo de modelo para ter um menu suspenso de idiomas de destino compatíveis.
Saiba mais
Google App Engine
Google Cloud Functions
- Página inicial do Cloud Functions
- Documentação do Cloud Functions
- Contas de serviço padrão para o Cloud Functions
Google Cloud Run
Google Cloud Buildpacks, Container Registry, Artifact Registry
- Anúncio do Cloud Buildpacks
- Repositório do Cloud Buildpacks
- Página inicial do Cloud Artifact Registry
- Documentação do Cloud Artifact Registry
- Página inicial do Cloud Container Registry
- Documentação do Cloud Container Registry
Google Cloud Translation e Kit de ML do Google
- Página inicial da Cloud Translation
- Documentação do Cloud Translation
- Bibliotecas de cliente da API Cloud Translation (todas as linguagens de desenvolvimento)
- Idiomas compatíveis com a API Cloud Translation (falados/escritos)
- Página de preços da API Translation
- Todas as APIs de "elementos básicos" de IA/ML do Google Cloud
- Google ML Kit (subconjunto de APIs de IA/ML do Google Cloud para dispositivos móveis)
- API de Tradução do Kit de ML do Google
Outros produtos/páginas do Google Cloud
- Bibliotecas de cliente do Google Cloud
- Nível "Sempre sem custo financeiro" do Google Cloud
- Toda a documentação do Google Cloud
Links do Python
- Guia de início rápido do App Engine com Python 3
- Tempo de execução do Python 2 no App Engine (padrão)
- Tempo de execução do Python 3 no App Engine (padrão)
- Diferenças entre os ambientes de execução do App Engine (padrão) em Python 2 e 3
- Guia de migração do App Engine (padrão) do Python 2 para o 3
- Guia de início rápido do Python para Cloud Functions
- Guia de início rápido do Cloud Run para Python
- Suporte do Python no Google Cloud
- Flask
Links do Node.js
- Guia de início rápido do Node.js no App Engine
- Ambiente de execução do Node.js App Engine (padrão)
- Guia de início rápido do Node.js para Cloud Functions
- Guia de início rápido do Cloud Run em Node.js
- Suporte do Node.js no Google Cloud
- Express
Licença
Este tutorial está licenciado sob uma Licença Creative Commons Atribuição 2.0 Genérica, enquanto o código-fonte no repositório está licenciado sob a Apache 2.