本教程介绍如何使用 以及通过定位 HTTP 端点来使用 Cloud Scheduler。在以下情况下使用 HTTP 函数: 您需要让函数具有网址端点并响应 HTTP 请求, Webhook
请注意,您也可以 安排一个事件驱动型函数 函数被直接触发,以响应您的 例如 Pub/Sub 主题中的消息或 Cloud Storage 存储桶。如需了解详情,请参阅 Cloud Functions 的类型。
安排 Cloud Function 执行是一种常见的做法, Cloud Scheduler 的使用场景。在此教程中,您将学习以下操作:
- 创建一个简单的 HTTP Cloud Functions 函数。
- 创建 Cloud Scheduler 作业。
- 运行 Cloud Scheduler 作业。
- 验证 Cloud Function 是否由 Cloud Scheduler 作业。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
启用 Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler API。
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Cloud Run > Cloud Run Invoker role to the service account.
To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
启用 Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler API。
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Cloud Run > Cloud Run Invoker role to the service account.
To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
- 默认情况下,Cloud Functions 函数会使用自动创建的
默认的 Compute Engine 服务账号
。您可以使用此服务账号来试用
本教程。不过,根据您的组织政策配置,
默认服务账号可能无法自动获得
自己的项目如果是这种情况,
向服务账号授予
以下角色:
<ph type="x-smartling-placeholder">
- </ph>
- Artifact Registry Writer (
roles/artifactregistry.writer
) - 日志写入者 (
roles/logging.logWriter
) - Storage Object Viewer (
roles/storage.objectViewer
)
- Artifact Registry Writer (
请注意,您必须授予 Cloud Run Invoker 角色,因为 在 Cloud Functions (第 2 代) 中, 可通过管理底层 API 来获得调用权限 Cloud Run 服务。
创建 HTTP Cloud Functions 函数
创建一个由 Cloud Scheduler 触发的 HTTP 函数。
在 Google Cloud 控制台中,前往 Cloud Functions。 页面。
点击
创建函数。在基本信息部分中,执行以下操作:
- 在环境列表中,选择第 2 代。
- 输入函数的名称。
- 在区域列表中,选择一个区域。
在触发器部分中,执行以下操作:
- 在触发器类型列表中,选择 HTTPS。
对于身份验证,请选择需要身份验证。
如需了解详情,请参阅 进行身份验证以进行调用(第 2 代)。
接受其他默认设置,然后点击下一步。
请勿修改默认运行时语言和示例代码。代码的作用 不使用任何云服务,也不需要启用其他权限。 点击部署。
函数部署成功后,点击触发器标签页。
复制函数的 HTTP 网址。
创建 Cloud Scheduler 作业
创建一个使用 HTTP 触发操作的 Cloud Scheduler 作业。
在 Google Cloud 控制台中,转到 Cloud Scheduler 页面。
点击
创建作业。输入作业的名称。
在区域列表中,选择一个区域。
使用 unix-cron 格式指定作业的频率:
30 16 * * 7
如需了解详情,请参阅 Cron 作业格式和时区。
在时区列表中,选择一个时区。
点击继续。
在目标类型列表中,选择 HTTP。
在网址字段中,输入您之前使用的函数的 HTTP 网址 已复制。
在 Auth header 列表中,选择 Add OIDC token。
在服务账号列表中,选择您之前使用的服务账号 创建。
在受众群体字段中,输入您之前使用的函数的 HTTP 网址 已复制。
点击创建。
您创建了一个 Cron 作业,该作业会在 16:30 运行您的 Cloud Function 每周日。
运行 Cloud Scheduler 作业
您现在可以运行自己创建的作业了。
在 Google Cloud Console 中,前往 Cloud Scheduler 页面。
选中您创建的作业对应的复选框,然后点击强制运行。
初次调用时,项目中创建的第一个作业可能需要 只需几分钟即可配置和运行。
作业运行后,Status of last execution(上次执行状态)应指示
Success
.
验证 Cloud Functions 中的结果
您可以验证 Cloud Function 是否已成功触发 由 Cron 作业执行
在 Google Cloud 控制台中,转到 Cloud Functions 页面。
点击函数名称。
函数详情页面打开,并显示了每秒调用次数图表 显示对该函数的第一次调用。
点击日志标签页。
您应该会看到类似如下的日志条目:
POST 200 146 B 5 ms Google-Cloud-Scheduler https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
- 在 Google Cloud 控制台中,进入管理资源页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
删除教程资源
在 Google Cloud 控制台中,转到 Cloud Scheduler 页面。
选择作业旁边的复选框。
点击
删除,然后确认您的 删除。在 Google Cloud 控制台中,转到 Cloud Functions 页面。
选中您的函数旁边的复选框。
点击
删除,然后确认您的 删除。在 Google Cloud 控制台中,转到服务账号页面。
选中您创建的服务账号旁边的复选框。
点击
删除,然后确认您的 删除。