Executar jobs

Nesta página, descrevemos como executar jobs do Cloud Run. A execução de um job cria uma execução de job em que todas as tarefas precisam ser concluídas até o fim. As execuções do job gravam registros no Cloud Logging e enviam dados de monitoramento ao Cloud Monitoring.

Além desses recursos de geração de registros, também é possível visualizar detalhes das 1000 execuções mais recentes de um job usando o painel de detalhes da execução, com todas as execuções que ocorreram nos últimos sete dias. Os detalhes das execuções mais antigas são removidos e não ficam mais visíveis no painel de detalhes da execução. No entanto, os registros e os dados de monitoramento de execuções mais antigas ainda estão disponíveis no Cloud Logging e no Cloud Monitoring, sujeitos às políticas de retenção desses produtos

Funções exigidas

Para receber as permissões necessárias para as operações descritas nesta página, peça ao administrador para conceder a você um dos seguintes papéis do IAM no job do Cloud Run:

  • Para executar jobs usando a CLI do Google Cloud: invocador do Cloud Run (roles/run.invoker) no job do Cloud Run
  • Para executar jobs usando o console Google Cloud , substituir as configurações de jobs ou cancelar execuções de jobs: Desenvolvedor do Cloud Run (roles/run.developer) no job do Cloud Run

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o job do Cloud Run interagir com APIs doGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Executar jobs

É possível executar jobs usando o console Google Cloud , a CLI do Google Cloud, as bibliotecas de cliente ou a API REST.

Console

Para executar um job:

  1. No console Google Cloud , acesse a página Jobs do Cloud Run:

    Acessar jobs do Cloud Run

  2. Localize o job em que você tem interesse.

  3. Clique no job para exibir a página de detalhes.

  4. Clique em Executar.

gcloud

Para executar um job atual:

gcloud run jobs execute JOB_NAME

Se você quiser que o comando aguarde até que a execução seja concluída, use

gcloud run jobs execute JOB_NAME --wait --region=REGION

Substitua:

  • JOB_NAME: o nome do job.
  • REGION: a região em que o recurso pode ser encontrado. Por exemplo, europe-west1. Como alternativa, defina a propriedade run/region.

Bibliotecas de cliente

Para executar um job atual a partir do código, siga estas etapas:

API REST

Para executar um job atual, envie uma solicitação HTTP POST para o método de API jobs.run.

Por exemplo, usando curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

Substitua:

  • ACCESS_TOKEN: um token de acesso válido para uma conta com as permissões do IAM para executar um job. Por exemplo, se você fez login no gcloud, é possível recuperar um token de acesso usando gcloud auth print-access-token. Em uma instância de contêiner do Cloud Run, é possível recuperar um token de acesso por meio do servidor de metadados da instância de contêiner.
  • JOB_NAME: o nome do job.
  • REGION: a Google Cloud região do job.
  • PROJECT_ID: o ID do projeto do Google Cloud .

Executar jobs imediatamente

Console

Para executar um job imediatamente:

  1. No console Google Cloud , acesse a página Jobs do Cloud Run:

    Acessar jobs do Cloud Run

  2. Se você já tiver um job, clique nele para exibir a página de detalhes e selecione Ver e editar a configuração do job. Se você estiver criando um job, selecione Implantar contêiner.

  3. Vá até a parte de baixo da página e marque a caixa Executar job imediatamente antes de criar ou atualizar o job.

gcloud

É possível especificar a flag --execute-now ao criar ou atualizar um job:

  • Como criar um job:

    gcloud run jobs create JOB_NAME \
      --image IMAGE_URL \
      --execute-now \
      --region=REGION
  • Para atualizar um job:

    gcloud run jobs update JOB_NAME --execute-now --region=REGION

Substitua:

  • JOB_NAME: o nome do job.
  • IMAGE_URL: uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • REGION: a região em que o recurso pode ser encontrado. Por exemplo, europe-west1.

YAML

É possível armazenar a especificação do job em um arquivo YAML e implantá-la usando a CLI gcloud.

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Configure o atributo startExecutionToken como mostrado:

    apiVersion: run.googleapis.com/v2
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
      startExecutionToken: START_EXECUTION_SUFFIX

    Substitua:

    • JOB_NAME: o nome do seu job do Cloud Run; Os nomes dos jobs precisam ter 49 caracteres ou menos e ser exclusivos por região e projeto.
    • IMAGE_URL: uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • START_EXECUTION_SUFFIX: uma string exclusiva usada como sufixo para criar uma nova execução. O job vai ficar pronto quando a execução for iniciada com sucesso. A soma do nome do job e do comprimento do token precisa ser menor que 63 caracteres.

    Também é possível definir outras configurações, como variáveis de ambiente ou limites de memória.

  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run jobs replace job.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_job na configuração do Terraform:
resource "google_cloud_run_v2_job" "default" {
   name     = "cloudrun-job"
   location = "REGION"
   deletion_protection = false
   start_execution_token = "START_EXECUTION_SUFFIX"
   template {
      template {
         containers {
         image = "us-docker.pkg.dev/cloudrun/container/job"
         }
      }
   }
}

Substitua:

  • REGION: a Google Cloud região. Por exemplo, europe-west1.
  • START_EXECUTION_SUFFIX: uma string exclusiva usada como sufixo para criar uma nova execução. O job vai ficar pronto quando a execução for iniciada com sucesso. A soma do nome do job e do comprimento do token precisa ser menor que 63 caracteres.

Bibliotecas de cliente

Para executar um job imediatamente do código usando as bibliotecas de cliente do Cloud:

API REST

Para executar jobs imediatamente após a criação, envie uma solicitação HTTP POST para o endpoint jobs da API Cloud Run Admin.

Por exemplo, usando curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{
     "template": {
        "template": {
           "containers":
              {
                 "image": "IMAGE_URL"
              }
        }
     },
     "startExecutionToken": "START_EXECUTION_SUFFIX"
  }' \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs?jobId=JOB_NAME"

Substitua:

  • ACCESS_TOKEN: um token de acesso válido para uma conta com as permissões do IAM para criar jobs. Por exemplo, se você fez login no gcloud, é possível recuperar um token de acesso usando gcloud auth print-access-token. Em uma instância de contêiner do Cloud Run, é possível recuperar um token de acesso por meio do servidor de metadados da instância de contêiner.
  • IMAGE_URL: uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • START_EXECUTION_SUFFIX: uma string exclusiva usada como sufixo para criar uma nova execução. O job vai ficar pronto quando a execução for iniciada com sucesso. A soma do nome do job e do comprimento do token precisa ser menor que 63 caracteres.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • REGION: a Google Cloud região do job.
  • JOB_NAME: o nome do job que você quer criar.

Substituir configuração do job para uma execução específica

É possível substituir os argumentos, as variáveis de ambiente, o número de tarefas e tempo limite da tarefa configurados para um job ao executar um job. Para isso, defina esses parâmetros ao iniciar uma nova execução de job. Os parâmetros especificados afetam apenas essa execução e não as seguintes, porque a definição do job subjacente permanece inalterada.

Veja alguns casos de uso comuns:

  • Você executa o job de modo programático pelo seu código e quer substituir argumentos e/ou variáveis de ambiente, por exemplo, para informar ao job onde os dados de entrada estão localizados para essa execução.
  • Você tem um job em que cada tarefa visa processar apenas uma parte dos dados de entrada. Você quer substituir o número de tarefas com base no número de entradas a serem processadas.
  • O tempo de execução do job varia entre as execuções. Você quer substituir o tempo limite da tarefa com base no tempo de execução esperado do job.

Para substituir a configuração do job para uma execução:

Console

  1. Acessar a página de jobs do Cloud Run

  2. Localize o job em que você tem interesse.

  3. Clique no job para exibir a página de detalhes.

  4. Clique na seta de expansão na frente do botão Editar e em Executar com substituições para exibir o formulário Executar job com substituições.

    imagem

  5. Altere os argumentos, as variáveis de ambiente, o número de tarefas e/ou a configuração de tempo limite da tarefa para essa execução conforme preferir e clique em Executar.

gcloud

Use o comando:

gcloud run jobs execute JOB_NAME \
     --args ARGS \
     --update-env-vars KEY=VALUE>,KEY_N=VALUE_N \
     --tasks TASKS \
     --task-timeout TIMEOUT

Substitua:

Bibliotecas de cliente

Para executar um job atual usando o código, substituindo a configuração do job:

API REST

Para substituir a configuração de um job atual, envie uma solicitação HTTP POST para fazer a solicitação ao endpoint jobs da API Cloud Run Admin.

Por exemplo, usando curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{"overrides": {"containerOverrides": [{"args": ["ARGS"], "env": [{"name": "KEY", "value": "VALUE"}]}], "taskCount": TASKS, "timeout": "TIMEOUT" }}' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

Substitua:

Cancelar execução do job

Para interromper a execução de um job do Cloud Run em execução, use o recurso de cancelamento. O cancelamento de uma execução de job interrompe a execução atual do job. As execuções canceladas têm o status cancelled. Você ainda poderá ver a execução, incluindo os dados de configuração, os registros e os dados de monitoramento.

O cancelamento de uma execução de job não reverte as cobranças relacionadas ao uso de jobs do Cloud Run pelo tempo de execução.

Para cancelar uma execução:

Console

  1. Acessar a página de jobs do Cloud Run

  2. Clique no job para abrir os detalhes.

  3. Selecione a execução do job que você quer cancelar.

  4. No menu Ações, clique no ícone de reticências e em Cancelar.

gcloud

Use o comando:

gcloud run jobs executions cancel EXECUTION_NAME

Substitua EXECUTION_NAME pelo nome da execução.

Esse comando solicita confirmação. Portanto, responda ao prompt digitando y para confirmar.

Bibliotecas de cliente

Para cancelar a execução de um job a partir do código:

API REST

Para cancelar a execução de um job, envie uma solicitação HTTP POST para o endpoint jobs da API Cloud Run Admin.

Por exemplo, usando curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME/executions/EXECUTION-NAME:cancel

Substitua:

  • ACCESS_TOKEN: um token de acesso válido para uma conta com as permissões do IAM para cancelar execuções de jobs. Por exemplo, se você fez login no gcloud, é possível recuperar um token de acesso usando gcloud auth print-access-token. Em uma instância de contêiner do Cloud Run, é possível recuperar um token de acesso por meio do servidor de metadados da instância de contêiner.
  • JOB_NAME: o nome do job.
  • EXECUTION-NAME: o nome da execução do job.
  • REGION: a Google Cloud região do job.
  • PROJECT_ID: o ID do projeto do Google Cloud .

Excluir uma execução de job

É possível excluir uma execução de job, mesmo que ela esteja em execução no momento. Se você excluir uma execução, ela interromperá a execução. Para detalhes, consulte Excluir uma execução de job.

A seguir

Depois de executar um job, faça o seguinte: