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

  1. 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.
  2. Instale a Google Cloud CLI.

  3. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. 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 a resourcemanager.projects.create permissão. Saiba como conceder papéis.
    • Crie um Google Cloud projeto:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por 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_ID pelo nome do Google Cloud projeto.

  6. Verifique se o faturamento está ativado para o Google Cloud projeto.

  7. 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 a serviceusage.services.enable permissão. Saiba como conceder papéis.

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  8. 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.

  9. Instale a Google Cloud CLI.

  10. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. 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 a resourcemanager.projects.create permissão. Saiba como conceder papéis.
    • Crie um Google Cloud projeto:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por 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_ID pelo nome do Google Cloud projeto.

  13. Verifique se o faturamento está ativado para o Google Cloud projeto.

  14. 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 a serviceusage.services.enable permissão. Saiba como conceder papéis.

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  15. 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.

  16. 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 Editor no projeto. Nesse caso, você precisa conceder à conta de serviço os seguintes papéis:
    1. Administrador do Artifact Registry (roles/artifactregistry.admin)
    2. Gravador de criação no push do Artifact Registry (roles/artifactregistry.createOnPushWriter)
    3. Administrador do Compute (roles/compute.admin)
    4. Gravador de registros (roles/logging.logWriter)
    5. Leitor de objetos do Storage (roles/storage.objectViewer)

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.

  1. No Google Cloud console, acesse a página do App Engine.

    Acessar o App Engine

  2. 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.

  3. Selecione uma região para o seu aplicativo e anote-a.

    Observe que europe-west e us-central são chamados, respectivamente, europe-west1 e us-central1 nos comandos do Cloud Tasks.

  4. Não selecione uma conta de serviço. A conta de serviço padrão do App Engine é usada.

  5. Clique em Próxima.

    O aplicativo é configurado e criado. Isso pode levar alguns minutos.

  6. 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.

  1. No terminal, clone o repositório do aplicativo de exemplo na sua máquina local.

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    
  2. Navegue até o diretório que contém o exemplo de código.

    cd nodejs-docs-samples/cloud-tasks/snippets
    
  3. Instale todas as dependências usando um gerenciador de pacotes do Node.js.

    Você pode usar o NPM:

    npm install
    

    Ou, você pode usar o Yarn:

    yarn install
    
  4. Implante o serviço do worker (server.js) no ambiente padrão do App Engine.

    gcloud app deploy app.yaml
    
  5. Verifique se o app que contém o serviço está em execução.

    gcloud app browse
    
  6. No 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.

  1. No terminal, crie uma fila que registre todas as operações.

    gcloud tasks queues create QUEUE_NAME \
        --log-sampling-ratio=1.0 \
        --location=REGION
    

    Substitua:

    • QUEUE_NAME: um nome para sua fila do Cloud Tasks
    • REGION: a região em que você implantou o app
  2. Aguarde a inicialização da fila e verifique se ela foi criada.

    gcloud tasks queues describe QUEUE_NAME \
        --location=REGION
    

    A 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.

  1. 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_NAME
    
  2. Crie uma tarefa com um payload de hello e 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 hello
    
  3. Verifique se a tarefa foi executada exibindo os registros do serviço do worker.

    gcloud app logs read
    

    Os 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:

  1. Exclua a fila do Cloud Tasks:

    gcloud tasks queues delete QUEUE_NAME \
        --location=REGION
    
  2. Desative o aplicativo do App Engine.

A seguir