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 do Google Cloud, substituir as configurações de jobs ou cancelar execuções de jobs: Cloud Run Developer (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 do Google Cloud, como 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 do Google Cloud ou a CLI do Google Cloud.

Console

Para executar um job:

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

  • Substitua JOB_NAME pelo nome do job.
  • REGION pela região em que o recurso pode ser encontrado. 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 por um token de acesso válido para uma conta que tenha 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.
  • Substitua JOB-NAME pelo nome do job.
  • REGION pela região do Google Cloud do job.
  • PROJECT-ID pelo ID do projeto do Google Cloud.

Executar jobs imediatamente após a criação deles

Se você usar a linha de comando, poderá especificar a execução do job imediatamente após a criação deles:

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

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

Substituir

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": TASK-COUNT, "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 canceled. 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. Encontre a execução do job que você quer cancelar.

  3. Clique na execução do job para exibir a página de detalhes dela.

  4. Clique 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 por 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.
  • Substitua JOB_NAME pelo nome do job.
  • Substitua EXECUTION-NAME pelo nome do job.
  • REGION pela região do Google Cloud do job.
  • PROJECT-ID pelo 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: