本页面介绍如何执行 Cloud Run 作业。执行作业会创建一个作业执行,其中的所有任务都必须成功完成,该作业执行才能成功。作业执行将日志写入 Cloud Logging,并将监控数据发送到 Cloud Monitoring。
除了这些日志记录功能之外,您还可以使用执行详情窗格查看作业最近 1,000 次执行的作业执行详情,以及过去 7 天内发生的任何执行。较早的执行详情会被移除,并且不再显示在执行详情窗格中。但是,较早的执行的日志和监控数据仍然在 Cloud Logging 和 Cloud 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、客户端库或 REST API 执行作业。
控制台
如需执行作业,请执行以下操作:
在 Google Cloud 控制台中,前往 Cloud Run 作业页面:
找到相关作业。
点击该作业以显示作业详情页面。
点击执行。
gcloud
如需执行现有作业,请运行以下命令:
gcloud run jobs execute JOB_NAME
如果您希望命令等待执行完成,请使用以下命令
gcloud run jobs execute JOB_NAME --wait --region=REGION
替换以下内容:
- JOB_NAME:作业的名称。
- REGION:资源所在的区域。例如
europe-west1。 或者,设置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。
立即执行作业
控制台
如需立即执行作业,请执行以下操作:
在 Google Cloud 控制台中,前往 Cloud Run 作业页面:
如果您具有现有作业,请点击该作业以显示作业详情页面,然后选择查看和修改作业配置。如果您要创建新作业,请选择部署容器。
在创建或更新作业之前,前往页面底部,并勾选立即执行作业复选框。
gcloud
您可以在创建或更新作业时指定 --execute-now 标志:
创建作业:
gcloud run jobs create JOB_NAME \ --image IMAGE_URL \ --execute-now \ --region=REGION
更新作业:
gcloud run jobs update JOB_NAME --execute-now --region=REGION
替换以下内容:
- JOB_NAME:作业的名称。
- IMAGE_URL:对容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/job:latest。 - REGION:资源所在的区域。例如
europe-west1。
YAML
您可以将作业规范存储在 YAML 文件中,然后使用 gcloud CLI 进行部署。
如果您要创建新的作业,请跳过此步骤。如果您要更新现有作业,请下载其 YAML 配置:
gcloud run jobs describe JOB_NAME --format export > job.yaml
配置
startExecutionToken属性,如下所示:apiVersion: run.googleapis.com/v2 kind: Job metadata: name: JOB_NAME spec: template: spec: template: spec: containers: - image: IMAGE_URL startExecutionToken: START_EXECUTION_SUFFIX
替换以下内容:
- JOB_NAME:Cloud Run 作业的名称 作业名称不得超过 49 个字符,并且在每个区域和项目中必须是唯一的。
- IMAGE_URL:对容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/job:latest。 - START_EXECUTION_SUFFIX:用作创建新执行的后缀的唯一字符串。成功开始执行后,作业将变为就绪状态。作业名称和令牌长度之和必须少于 63 个字符。
您还可以指定更多配置,例如环境变量或内存限制。
使用以下命令创建或更新作业:
gcloud run jobs replace job.yaml
Terraform
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
将以下内容添加到 Terraform 配置中的google_cloud_run_v2_job 资源: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"
}
}
}
}
替换以下内容:
- REGION: Google Cloud 区域。例如 europe-west1。
- START_EXECUTION_SUFFIX:用作创建新执行的后缀的唯一字符串。成功开始执行后,作业将变为就绪状态。作业名称和令牌长度之和必须少于 63 个字符。
客户端库
如需使用 Cloud 客户端库通过代码立即执行作业,请执行以下操作:
REST API
如需在创建作业后立即执行作业,请向 Cloud Run Admin API jobs 端点发送 POST HTTP 请求。
例如,使用 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"
替换以下内容:
- ACCESS_TOKEN:具有创建作业的 IAM 权限的账号的有效访问令牌。例如,如果您已登录 gcloud,则可以使用
gcloud auth print-access-token检索访问令牌。在 Cloud Run 容器实例中,您可以使用容器实例元数据服务器检索访问令牌。 - IMAGE_URL:对容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/job:latest。 - START_EXECUTION_SUFFIX:用作创建新执行的后缀的唯一字符串。成功开始执行后,作业将变为就绪状态。作业名称和令牌长度之和必须少于 63 个字符。
- PROJECT_ID: Google Cloud 项目 ID。
- REGION:作业的 Google Cloud 区域。
- JOB_NAME:您要创建的作业的名称。
替换特定执行的作业配置
您可以在执行作业时替换为作业配置的参数、环境变量、任务数量和任务超时,方法是在开始新作业执行时设置这些参数。您指定的参数只会影响此执行,而不会影响后续执行,因为底层作业定义保持不变。
一些常见使用场景包括:
- 例如,您通过代码以编程方式执行作业,并且想要替换参数和/或环境变量,以告诉作业本次执行的输入数据所在的位置。
- 在您的作业中,每个任务只能处理一条输入数据。您希望根据要处理的输入数来替换任务的数量。
- 作业的运行时间因不同执行而异。您希望根据作业的预期运行时间替换任务超时。
替换执行的作业配置:
控制台
找到相关作业。
点击该作业以显示作业详情页面。
点击修改按钮前面的展开箭头,然后点击以替换项执行作业以显示使用替换执行作业表单。
根据需要更改此执行的参数、环境变量、任务数量和/或任务超时配置,然后点击执行。
gcloud
使用以下命令:
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": TASKS, "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:作业参数。
- KEY 和 VALUE 对:环境变量。
- TASKS:任务的数量。
- TIMEOUT:任务超时。
- REGION:作业的 Google Cloud 区域。
- PROJECT_ID: Google Cloud 项目 ID。
取消作业执行
如需停止当前正在运行的 Cloud Run 作业执行,请使用取消功能。取消作业执行会停止当前的作业执行。已取消的执行处于已取消状态。您仍然可以查看执行作业,包括其配置数据、日志和监控数据。
取消作业执行不会撤销执行作业期间的任何 Cloud Run 作业使用费用。
如需取消执行,请执行以下操作:
控制台
点击作业以打开作业详情窗格。
选择您要取消的作业执行。
在操作菜单下,点击省略号图标,然后点击取消。
gcloud
使用以下命令:
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。
删除作业执行
即使作业执行当前正在进行,您也可以将其删除。如果您删除执行,则会阻止执行继续。如需了解详情,请参阅删除作业执行。
后续步骤
执行作业后,您可以执行以下操作: