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

Este início rápido mostra como adicionar uma tarefa do App Engine a uma fila do Cloud Tasks através da 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. Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.

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

    gcloud init
  5. 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.

  6. Verify that billing is enabled for your Google Cloud project.

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

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

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  9. Install the Google Cloud CLI.

  10. Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.

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

    gcloud init
  12. 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.

  13. Verify that billing is enabled for your Google Cloud project.

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

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

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  16. A conta de serviço predefinida do App Engine é criada automaticamente quando usa o App Engine. Pode usar esta conta de serviço quando experimentar este início rápido. No entanto, consoante a configuração da política da organização, a conta de serviço predefinida pode não receber automaticamente a função Editor no seu projeto. Se for esse o caso, tem de conceder à conta de serviço as seguintes funções:
    1. Administrador do Artifact Registry (roles/artifactregistry.admin)
    2. Escritor de criação no envio do Artifact Registry (roles/artifactregistry.createOnPushWriter)
    3. Administrador do Compute (roles/compute.admin)
    4. Logs Writer (roles/logging.logWriter)
    5. Visualizador de objetos de armazenamento (roles/storage.objectViewer)
  17. Adicione uma aplicação do App Engine

    Quando segmenta uma tarefa do App Engine e, antes de poder implementar uma app no ambiente padrão do App Engine, tem de adicionar uma aplicação do App Engine ao seu projeto.

    1. Na Google Cloud consola, aceda à página App Engine.

      Aceder ao App Engine

    2. Na caixa de diálogo Bem-vindo ao App Engine, faça uma das seguintes ações:

      • Se já tiver criado uma aplicação do App Engine e for apresentada a mensagem A sua aplicação do App Engine foi criada, pode ignorar os passos restantes nesta secção e continuar com os passos na secção Instale e implemente o exemplo.

        ou

      • Se ainda não criou uma aplicação do App Engine, clique em Criar aplicação e continue com os restantes passos nesta secção.

    3. Selecione uma região para a sua aplicação e tome nota da mesma.

      Tenha em atenção que europe-west e us-central são denominados, respetivamente, europe-west1 e us-central1 nos comandos do Cloud Tasks.

    4. Não selecione uma conta de serviço. É usada a conta de serviço do App Engine predefinida.

    5. Clicar em Seguinte.

      A aplicação é configurada e criada. Esta operação pode demorar alguns minutos.

    6. Não transfira o Cloud SDK. Em vez disso, clique em Farei isso mais tarde.

      Deve ver a mensagem A sua aplicação do App Engine foi criada.

    Instale e implemente o exemplo

    O exemplo do Node.js usado neste início rápido consiste em dois ficheiros: createTask.js é executado localmente como uma ferramenta de linha de comandos para criar e adicionar tarefas à fila de tarefas; server.js é implementado no App Engine como um serviço de trabalho para processar a tarefa.

    1. No terminal, clone o repositório da aplicação de exemplo para a sua máquina local.

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

      cd nodejs-docs-samples/cloud-tasks/snippets
      
    3. Instale todas as dependências através de um gestor de pacotes do Node.js.

      Pode usar o NPM:

      npm install
      

      Em alternativa, pode usar o Yarn:

      yarn install
      
    4. Implemente o serviço de trabalho (server.js) no ambiente padrão do App Engine.

      gcloud app deploy app.yaml
      
    5. Certifique-se de que a app que contém o serviço está em execução.

      gcloud app browse
      
    6. No navegador, aceda ao link fornecido. Por exemplo:

      https://PROJECT_ID.uc.r.appspot.com/
      

      Deverá ver Hello, World! apresentado.

    Crie uma fila do Cloud Tasks

    Use o comando gcloud tasks queues create para criar a fila no ambiente que preparou.

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

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

      Substitua o seguinte:

      • QUEUE_NAME: um nome para a fila do Cloud Tasks
      • REGION: a região na qual implementou a sua app
    2. Aguarde a inicialização da fila e, em seguida, verifique se foi criada com êxito.

      gcloud tasks queues describe QUEUE_NAME \
          --location=REGION
      

      O resultado deve ser semelhante ao seguinte:

       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
      

    Adicione uma tarefa à fila do Cloud Tasks

    Crie uma tarefa, adicione-a à fila que criou e entregue essa tarefa ao serviço de trabalhadores.

    1. Defina as seguintes variáveis de ambiente. O cliente usa estas informações para criar o pedido.

      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. A carga útil pode ser qualquer dado do pedido que o serviço de processamento precisa para processar a tarefa.

      node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
      
    3. Verifique se a tarefa foi executada apresentando os registos do serviço de trabalho.

      gcloud app logs read
      

      Os registos devem ser semelhantes aos seguintes:

      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 incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    Em alternativa, pode eliminar os recursos que criou:

    1. Elimine a fila de tarefas do Cloud:

      gcloud tasks queues delete QUEUE_NAME \
          --location=REGION
      
    2. Desative a aplicação do App Engine.

    O que se segue?