Adicionar uma tarefa do App Engine a uma fila de tarefas do Cloud Tasks
O Cloud Tasks permite que você envie tarefas assíncronas para serviços do App Engine para processar cargas de trabalho em segundo plano. Neste guia de início rápido, você vai usar a API Cloud Tasks para criar e adicionar uma tarefa do App Engine a uma fila de tarefas do Cloud Tasks.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário ter um papel específico do IAM para selecionar um projeto. É possível selecionar qualquer projeto em que você tenha um papel.
-
Criar um projeto: para criar um projeto, é preciso ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto do Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative as APIs Cloud Resource Manager e API Cloud Tasks, se ainda não estiverem ativadas:
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário ter um papel específico do IAM para selecionar um projeto. É possível selecionar qualquer projeto em que você tenha um papel.
-
Criar um projeto: para criar um projeto, é preciso ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto do Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative as APIs Cloud Resource Manager e API Cloud Tasks, se ainda não estiverem ativadas:
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
- A
conta de serviço padrão do App Engine
é criada automaticamente quando você usa o App Engine. Você pode usar essa conta de serviço ao testar este guia de início rápido. No entanto, dependendo da configuração da política da organização, a conta de serviço padrão pode não receber automaticamente o papel
Editorno projeto. Nesse caso, conceda à conta de serviço os seguintes papéis:- Administrador do Artifact Registry (
roles/artifactregistry.admin) - Gravador Create-on-Push do Artifact Registry (
roles/artifactregistry.createOnPushWriter) - Administrador do Compute (
roles/compute.admin) - Gravador de registros (
roles/logging.logWriter) - Leitor de objetos do Storage (
roles/storage.objectViewer)
- Administrador do Artifact Registry (
Adicionar um aplicativo do App Engine
Ao segmentar uma tarefa do App Engine e antes de implantar um app no ambiente padrão do App Engine, é necessário adicionar um aplicativo do App Engine ao projeto.
No console do Google Cloud , acesse a página do App Engine.
Na caixa de diálogo Bem-vindo ao App Engine, faça o seguinte:
Se você já tiver criado um aplicativo do App Engine e a mensagem Seu aplicativo do App Engine foi criado for exibida, pule as etapas restantes desta seção e prossiga para as etapas na seção Instalar e implantar o exemplo.
ou
Se você ainda não criou um aplicativo do App Engine, clique em Criar aplicativo e siga as etapas restantes nesta seção.
Selecione uma região para o aplicativo e anote essa informação.
Observe que
europe-westeus-centralsão chamados, respectivamente,europe-west1eus-central1nos comandos do Cloud Tasks.Não selecione uma conta de serviço. A conta de serviço padrão do App Engine será usada.
Clique em Próxima.
O aplicativo é configurado e criado. Isso pode levar alguns minutos.
Não faça o download do SDK Cloud. Em vez disso, clique em Farei isso mais tarde.
Você vai receber a mensagem Seu aplicativo do App Engine foi criado.
Instalar e implantar a amostra
A amostra do Node.js usada neste guia de início rápido consiste em dois arquivos:
createTask.js é executado localmente como uma ferramenta de linha de comando para criar e adicionar tarefas à
fila de tarefas. server.js é implantado no App Engine como
um serviço de worker para processar a tarefa.
No terminal, clone o repositório do aplicativo de exemplo na sua máquina local.
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitNavegue até o diretório que contém o exemplo de código.
cd nodejs-docs-samples/cloud-tasks/snippetsInstale todas as dependências usando um gerenciador de pacotes do Node.js.
Você pode usar o NPM:
npm installOu use o Yarn:
yarn installImplante o serviço de worker (
server.js) no ambiente padrão do App Engine.gcloud app deploy app.yamlVerifique se o app que contém o serviço está em execução.
gcloud app browseNo navegador, acesse o link fornecido. Exemplo:
https://PROJECT_ID.uc.r.appspot.com/Você verá
Hello, World!.
Criar uma fila de tarefas do Cloud Tasks
Use o comando gcloud tasks queues create
para criar a fila no ambiente que você preparou.
No terminal, crie uma fila que registre todas as operações.
gcloud tasks queues create QUEUE_NAME \ --log-sampling-ratio=1.0 \ --location=REGIONSubstitua:
QUEUE_NAME: um nome para a fila do Cloud TasksREGION: a região em que você implantou o app.
Aguarde a inicialização da fila e verifique se ela foi criada com sucesso.
gcloud tasks queues describe QUEUE_NAME \ --location=REGIONA saída será semelhante a esta:
name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_NAME rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
Adicionar uma tarefa à fila do Cloud Tasks
Crie uma tarefa, adicione-a à fila criada e entregue essa tarefa ao serviço do worker.
Defina as seguintes variáveis de ambiente. O cliente usa essas informações para criar a solicitação.
export PROJECT_ID=PROJECT_ID export LOCATION_ID=REGION export QUEUE_ID=QUEUE_NAMECrie uma tarefa com um payload de
helloe adicione essa tarefa à sua fila. O payload pode ser qualquer dado da solicitação que o serviço de worker precisa para processar a tarefa.node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID helloVerifique se a tarefa foi executada mostrando os registros do serviço de worker.
gcloud app logs readOs registros serão parecidos com isto:
2024-06-20 15:00:00 default[20240620t143852] "POST /log_payload HTTP/1.1" 200 2024-06-20 15:00:00 default[20240620t143852] App listening on port 8081 2024-06-20 15:00:00 default[20240620t143852] Press Ctrl+C to quit. 2024-06-20 15:00:00 default[20240620t143852] Received task with payload: hello
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud e os recursos.
Excluir um projeto do Google Cloud :
gcloud projects delete PROJECT_ID
Como alternativa, exclua os recursos que você criou:
Exclua a fila de tarefas do Cloud Tasks:
gcloud tasks queues delete QUEUE_NAME \ --location=REGION