执行作业

本页面介绍如何执行 Cloud Run 作业。执行作业会创建一个作业执行,其中的所有任务都必须成功完成,该作业执行才能成功。作业执行将日志写入 Cloud Logging,并将监控数据发送到 Cloud Monitoring

除了这些日志记录功能之外,您还可以使用执行详情窗格查看作业最近 1,000 次执行的作业执行详情,以及过去 7 天内发生的任何执行。较早的执行详情会被移除,并且不再显示在执行详情窗格中。但是,较早的执行的日志和监控数据仍然在 Cloud LoggingCloud Monitoring 中提供,具体取决于这些产品的保留政策。

执行作业

您可以使用 Google Cloud 控制台或 Google Cloud CLI 执行作业。

控制台

如需执行作业,请执行以下操作:

  1. 转到 Cloud Run 作业页面

  2. 找到相关作业。

  3. 点击该作业以显示作业详情页面。

  4. 点击执行

命令行

如需执行现有作业,请运行以下命令:

gcloud run jobs execute JOB_NAME

如果您希望命令等待执行完成,请使用以下命令

gcloud run jobs execute JOB_NAME --wait

JOB_NAME 替换为作业的名称。

客户端库

如需通过代码执行现有作业,请使用以下客户端库:

REST API

如需执行现有作业,请向 jobs.run API 方法发送 POST HTTP 请求

例如,使用 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

替换:

  • ACCESS_TOKEN 替换为具有执行作业的 IAM 权限的账号的有效访问令牌。例如,如果您已登录 gcloud,则可以使用 gcloud auth print-access-token 检索访问令牌。在 Cloud Run 容器实例中,您可以使用容器实例元数据服务器检索访问令牌。
  • JOB-NAME 替换为作业的名称。
  • REGION 替换为作业的 Google Cloud 区域。
  • PROJECT-ID 替换为 Google Cloud 项目 ID。

在创建作业后立即执行作业

如果使用命令行,您可以在创建作业后立即执行作业:

gcloud run jobs create JOB_NAME --execute-now

替换特定执行的作业配置

您可以在执行作业时替换为作业配置的参数、环境变量、任务数量和任务超时,方法是在开始新作业执行时设置这些参数。您指定的参数只会影响此执行,因为底层作业定义保持不变。您需要 run.jobs.runWithOverrides 权限才能使用此功能。Cloud Run Admin 和 Cloud Run Developer 角色具有此权限。

一些常见使用场景包括:

  • 例如,您通过代码以编程方式执行作业,并且想要替换参数和/或环境变量,以告诉作业本次执行的输入数据所在的位置。
  • 在您的作业中,每个任务只能处理一条输入数据。您希望根据要处理的输入数来替换任务的数量。
  • 作业的运行时间因不同执行而异。您希望根据作业的预期运行时间替换任务超时。

替换执行的作业配置:

控制台

  1. 转到 Cloud Run 作业页面

  2. 找到相关作业。

  3. 点击该作业以显示作业详情页面。

  4. 点击修改按钮前面的展开箭头,然后点击以替换项执行作业以显示使用替换执行作业表单。

    图片

  5. 根据需要更改此执行的参数、环境变量、任务数量和/或任务超时配置,然后点击执行

命令行

使用以下命令:

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

替换

客户端库

如需通过代码执行现有作业,请替换作业配置:

REST API

如需替换现有作业的作业配置,请向 Cloud Run Admin API jobs 端点发送 POST HTTP 请求

例如,使用 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

您需要在其中:

  • ACCESS_TOKEN 替换为具有执行作业替换的 IAM 权限的账号的有效访问令牌。例如,如果您已登录 gcloud,则可以使用 gcloud auth print-access-token 检索访问令牌。在 Cloud Run 容器实例中,您可以使用容器实例元数据服务器检索访问令牌。
  • JOB_NAME 替换为作业的名称。
  • ARGS 替换为作业参数
  • KEYVALUE 对替换为环境变量
  • TASKS 替换为任务数量
  • TIMEOUT 替换为任务超时
  • REGION 替换为作业的 Google Cloud 区域。
  • PROJECT-ID 替换为 Google Cloud 项目 ID。

取消作业执行

如需停止当前正在运行的 Cloud Run 作业执行,请使用取消功能。取消作业执行会停止当前的作业执行。已取消的执行处于已取消状态。您仍然可以查看执行,包括其配置数据、日志和监控数据。

取消作业执行不会撤消执行作业期间的任何 Cloud Run 作业使用费用。

如需取消执行,请执行以下操作:

控制台

  1. 转到 Cloud Run 作业页面

  2. 找到您要取消的作业执行

  3. 点击该作业执行以显示执行详情页面。

  4. 点击取消

命令行

使用以下命令:

gcloud run jobs executions cancel EXECUTION_NAME

EXECUTION_NAME 替换为执行的名称。

此命令要求确认,因此请输入 y 进行确认以响应提示。

客户端库

如需通过代码取消作业执行,请使用以下客户端库:

REST API

如需取消作业执行,请向 Cloud Run Admin API jobs 端点发送 POST HTTP 请求

例如,使用 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

您需要在其中:

  • ACCESS_TOKEN 替换为具有用于取消作业执行的 IAM 权限的账号的有效访问令牌。例如,如果您已登录 gcloud,则可以使用 gcloud auth print-access-token 检索访问令牌。在 Cloud Run 容器实例中,您可以使用容器实例元数据服务器检索访问令牌。
  • JOB_NAME 替换为作业的名称。
  • EXECUTION-NAME 替换为作业执行的名称。
  • REGION 替换为作业的 Google Cloud 区域。
  • PROJECT-ID 替换为 Google Cloud 项目 ID。

删除作业执行

即使作业执行当前正在进行,您也可以将其删除。如果您删除执行,则会阻止执行继续。如需了解详情,请参阅删除作业执行

后续步骤

执行作业后,您可以执行以下操作: