Adicionar uma tarefa do App Engine a uma fila do Cloud Tasks

Neste guia de início rápido, mostramos como adicionar uma tarefa do App Engine a uma fila da Cloud Tasks usando a API Cloud Tasks.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Resource Manager and Cloud Tasks API:

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  11. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Cloud Resource Manager and Cloud Tasks API:

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  13. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  14. 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 Editor no projeto. Nesse caso, é necessário conceder à conta de serviço os seguintes papéis:
    1. Administrador do Artifact Registry (roles/artifactregistry.admin)
    2. Gravador Create-on-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, adicione um aplicativo do App Engine ao seu projeto.

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

    Acessar o App Engine

  2. Na caixa de diálogo Welcome to App Engine, faça o seguinte:

    • Se você já criou um aplicativo do App Engine e a mensagem O aplicativo do App Engine foi criado aparecer, pule as etapas restantes desta seção e siga as etapas da 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 aplicativo e anote.

    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 será 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 Farei isso mais tarde.

    Você vai receber a mensagem Seu aplicativo do App Engine foi criado.

Instalar e implantar o exemplo

O exemplo do Node.js usado neste 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 worker para processar a tarefa.

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

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

    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 use 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/
    

    O Hello, World! vai aparecer.

Criar uma fila do Cloud Tasks

Use o comando gcloud tasks queues create 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 a fila de tarefas 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 com sucesso.

    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 de 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 que o serviço de worker precise para processar 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 devem ser 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
    

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud com esses recursos.

Delete a Google Cloud project:

gcloud projects delete PROJECT_ID

Você também pode excluir os recursos que criou:

  1. Exclua a fila do Cloud Tasks:

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

A seguir