执行作业

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

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

所需的角色

如需获得本页面中描述的操作所需的权限,请让管理员向您授予 Cloud Run 作业的以下 IAM 角色之一:

  • 如需使用 Google Cloud CLI 执行作业:Cloud Run 作业的 Cloud Run Invoker (roles/run.invoker) 角色
  • 如需使用 Google Cloud 控制台执行作业、替换作业配置或取消作业执行:Cloud Run 作业的 Cloud Run Developer (roles/run.developer) 角色

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。如果您的 Cloud Run 作业与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限管理访问权限

执行作业

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

控制台

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

  1. 转到 Cloud Run 作业页面

  2. 找到相关作业。

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

  4. 点击执行

命令行

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

gcloud run jobs execute JOB_NAME

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

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

您需要在其中:

  • JOB_NAME 替换为作业的名称。
  • REGION 替换为资源所在的区域。或者,设置 run/region 属性。

客户端库

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

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 --region=REGION

替换特定执行的作业配置

您可以在执行作业时替换为作业配置的参数、环境变量、任务数量和任务超时,方法是在开始新作业执行时设置这些参数。您指定的参数只会影响此执行,而不会影响后续执行,因为底层作业定义保持不变。

一些常见使用场景包括:

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

替换执行的作业配置:

控制台

  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。

删除作业执行

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

后续步骤

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