Adicionar uma tarefa do App Engine a uma fila do Cloud Tasks
Este guia de início rápido mostra como adicionar uma tarefa do App Engine a uma fila do Cloud Tasks usando a API Cloud Tasks.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você é novo no Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI 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: a seleção de um projeto não exige um papel específico do IAM. Você pode selecionar qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de criador de projetos
(
roles/resourcemanager.projectCreator), que contém aresourcemanager.projects.createpermissão. Saiba como conceder papéis.
-
Crie um Google Cloud projeto:
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o Google Cloud projeto que você está criando. -
Selecione o Google Cloud projeto que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do Google Cloud projeto.
-
Verifique se o faturamento está ativado para o Google Cloud projeto.
Ative a API Cloud Resource Manager e a API Cloud Tasks:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de Service Usage role (
roles/serviceusage.serviceUsageAdmin), que contém aserviceusage.services.enablepermissão. 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 Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI 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: a seleção de um projeto não exige um papel específico do IAM. Você pode selecionar qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de criador de projetos
(
roles/resourcemanager.projectCreator), que contém aresourcemanager.projects.createpermissão. Saiba como conceder papéis.
-
Crie um Google Cloud projeto:
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o Google Cloud projeto que você está criando. -
Selecione o Google Cloud projeto que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do Google Cloud projeto.
-
Verifique se o faturamento está ativado para o Google Cloud projeto.
Ative a API Cloud Resource Manager e a API Cloud Tasks:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de Service Usage role (
roles/serviceusage.serviceUsageAdmin), que contém aserviceusage.services.enablepermissão. 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 de
Editorno projeto. Nesse caso, você precisa conceder à conta de serviço os seguintes papéis:- Administrador do Artifact Registry (
roles/artifactregistry.admin) - Gravador de criação no 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 Google Cloud console, acesse a página do App Engine.
Na caixa de diálogo Bem-vindo ao App Engine, faça uma destas ações:
Se você já tiver criado um aplicativo do App Engine e uma mensagem Seu aplicativo do App Engine foi criado for exibida, pule as etapas restantes desta seção e siga 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 continue com as etapas restantes desta seção.
Selecione uma região para o seu aplicativo e anote-a.
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 é 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 Vou fazer isso mais tarde.
Uma mensagem Seu aplicativo do App Engine foi criado será exibida.
Instalar e implantar o exemplo
O exemplo do Node.js usado 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, você pode usar o Yarn:
yarn installImplante o serviço do 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/Hello, World!será exibido.
Criar uma fila do Cloud Tasks
Use o gcloud tasks queues create
comando 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 sua 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.
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-a 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 necessário para que o serviço do worker processe a tarefa.node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID helloVerifique se a tarefa foi executada exibindo os registros do serviço do worker.
gcloud app logs readOs registros serão semelhantes a este:
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
Liberar espaço
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o Google Cloud projeto do e os recursos.
Excluir um Google Cloud projeto:
gcloud projects delete PROJECT_ID
Como alternativa, você pode excluir os recursos criados:
Exclua a fila do Cloud Tasks:
gcloud tasks queues delete QUEUE_NAME \ --location=REGION