本教程介绍如何使用 Cloud Scheduler 和 Pub/Sub 触发 Cloud Functions 函数。Cloud Scheduler 的常见用例之一是能够安排 Cloud Function 的执行。 您将学习以下内容:
- 创建一个订阅 Pub/Sub 主题的简单 Cloud Functions 函数。
- 创建 Pub/Sub 主题以触发该函数。
- 创建一个 Cloud Scheduler 作业,以调用 Pub/Sub 触发器。
- 运行 Cloud Scheduler 作业。
- 验证运行是否成功。
准备工作
本教程假设您已经完成了 Cloud Scheduler 快速入门。因此,您可以使用以下工具和资源:启用了结算功能的 Google Cloud 项目。
项目上已启用的 Cloud Scheduler API 和 Pub/Sub API。您在学习本教程的过程需要启用 Cloud Functions API。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
- Cloud Functions
- Pub/Sub
- Cloud Scheduler
创建带有触发器的 Cloud Function
在 Google Cloud 控制台中,转到 Cloud Functions 页面。
如果出现提示,请点击启用 API。
点击创建函数。如果系统显示提示启用 API 的消息,请点击启用将其激活。
在基本设置部分,选择第 2 代环境,输入函数名称,然后选择一个区域。
在触发器部分中,选择需要身份验证。点击添加触发器,然后选择 Pub/Sub 触发器。此时会打开 Eventarc 触发器面板。如果系统提示您启用所需的 API,请点击启用。
在 Eventarc 触发器面板中,确保按如下方式填写前几个字段,或根据需要填写这些字段:
- 触发器类型:Google 来源
- 事件提供方:Cloud Pub/Sub
- 事件:
google.cloud.pubsub.topic.v1.messagePublished
在选择 Cloud Pub/Sub 主题字段中,选择一个现有主题,或点击创建新主题来创建新主题。您的函数会订阅此主题。记下主题的名称,稍后您将会用到。
- 如果系统提示,请点击授予,以允许 Pub/Sub 服务创建触发函数所需的身份令牌。回想一下,您之前为函数选择了需要身份验证。Pub/Sub 会使用身份令牌进行所需的身份验证。
在服务帐号字段中,点击创建新服务帐号。
输入服务帐号的名称,然后点击创建。 Eventarc 会使用此服务帐号通过 Pub/Sub 服务的身份令牌调用函数。
在向此服务帐号授予对项目的访问权限部分中,选择 Cloud Run Invoker 角色。这将授予该服务帐号调用第 2 代函数的权限。
点击完成。
不要选中失败时重试。点击保存触发器。
展开运行时、构建、连接和安全设置部分,然后选择运行时标签页。
在运行时服务帐号下的服务帐号字段中,点击创建。服务帐号创建流程将在新标签页中打开。此服务帐号是 Cloud Function 在运行时拥有的身份。
- 输入服务帐号的名称。
- 点击创建并继续。
- 点击完成。
您将被重定向到 Google Cloud 控制台的服务帐号页面。您可以关闭此标签页。
返回函数创建页面上的服务帐号字段,点击刷新,然后选择您刚刚创建的服务帐号。
点击下一步。如果系统提示您启用任何所需的 API,请点击启用。
请勿修改默认语言和示例代码。该代码不使用任何云服务,也不需要启用其他权限。点击部署。
创建 Cloud Scheduler 作业
在 Google Cloud 控制台中,转到 Cloud Scheduler 页面。
点击创建作业。
如有必要,请选择要在其中运行作业的区域。
为您的作业命名,并视需要添加说明。
使用 unix-cron 格式指定作业的unix-cron。
30 16 * * 7
如需了解详情,请参阅配置 Cron 作业时间表。
选择您所在的时区。
点击继续
在配置执行部分中,选择 Pub/Sub 作为目标类型。
选择您的主题名称。
添加要发送到目标的简短 Message 字符串。
点击创建。
您现在已经有一项 Cron 作业,它会在星期日 16:30 向您的 Pub/Sub 主题发送消息。您的 Cloud Function 已订阅该主题。
运行作业
您现在可以运行您创建的作业了。
在 Google Cloud Console 中,前往 Cloud Scheduler 页面。
选择您创建的作业。
点击 Force run。
由于需要进行必要的配置,因此在项目创建的第一个作业首次调用时,可能需要几分钟时间才能运行完毕。
请注意 Status of last execution(上次执行状态)列。作业运行后,此列应显示“Success”(成功)。
恭喜!您刚刚使用控制台查看了运行向 Pub/Sub 发送一条消息的 cron 作业的结果。接下来,您将了解如何验证您的 Cloud Function 是否成功执行。
验证 Cloud Functions 中的结果
如需验证您的 Cron 作业是否成功触发了您的 Cloud Function,请执行以下操作:
在 Google Cloud 控制台中,转到 Cloud Functions 页面。
点击函数名称。
函数详细信息页面将打开。调用次数/秒图表应显示对函数的首次调用。如需查看有关调用的详细信息,请点击日志。
恭喜!你的函数已经得到执行。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,请执行以下操作:
删除 Cloud Scheduler 作业
在 Google Cloud 控制台中,转到 Cloud Scheduler 页面。
选择作业旁边的复选框。
点击
删除并确认删除。
删除 Pub/Sub 主题
在 Google Cloud 控制台中,转到 Cloud Pub/Sub 页面。
选中您的主题旁边的复选框。
点击
删除并确认删除。
删除 Cloud Functions 函数
在 Google Cloud 控制台中,转到 Cloud Functions 页面。
选中函数旁边的复选框。
点击
删除并确认删除。
删除服务帐号
在 Google Cloud 控制台中,转到服务账号页面。
选中您创建的服务帐号旁边的复选框。
点击
删除并确认删除。
停用 API
如果您在按照本教程中的说明操作时启用了任何 API(例如 Eventarc、Cloud Functions 或 Pub/Sub API),请停用这些 API。停用 API 会影响对项目的 API 的访问权限,因此,如果项目中的其他资源使用了 API,请勿停用 API。
在 Google Cloud 控制台中,转到 API 和服务页面。
点击您想要禁用的 API。系统随即会显示描述该 API 的页面。
点击
停用 API。
删除项目
如果您为本教程创建了项目时需要执行此操作。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.