安排 Cloud Function

本教程介绍如何使用 Cloud Scheduler 和 Pub/Sub 触发 Cloud Functions 函数。能够安排 Cloud Function 的执行是 Cloud Scheduler 的常见使用场景。您将学习以下内容:

  • 创建一个订阅 Pub/Sub 主题的简单 Cloud Functions 函数。
  • 创建一个 Cloud Scheduler 作业,用于将消息发布到 Pub/Sub 主题。
  • 运行 Cloud Scheduler 作业。
  • 验证 Cloud Function 是否由 Cloud Scheduler 作业触发。

准备工作

本教程假定您已经完成了 Cloud Scheduler 快速入门。因此,我们为您提供了以下工具和资源:

  • 启用了结算功能的 Google Cloud 项目。

  • 项目中已启用 Cloud Scheduler API 和 Pub/Sub API。您将在学习本教程的过程中启用 Cloud Functions API。

费用

在本文档中,您将使用 Google Cloud 的以下收费组件:

  • Cloud Functions
  • Pub/Sub
  • Cloud Scheduler

您可使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

创建具有触发器的 Cloud Function

  1. 在 Google Cloud 控制台中,前往 Cloud Functions 页面。

    转到 Cloud Functions

  2. 如果出现提示,请点击启用 API

  3. 点击创建函数。如果出现提示您启用 API 的消息,请点击启用以激活 API。

  4. 基本设置部分,选择第 2 代环境,输入函数名称,然后选择一个区域。

  5. 触发器部分的触发器类型下,选择 Cloud Pub/Sub,然后点击更多选项。此时会打开 Eventarc 触发器面板。如果系统提示您启用所需的 API,请点击启用

  6. Eventarc 触发器面板中,确保已按以下方式填写前几个字段,或根据需要填写字段:

    • 触发器类型:Google 来源
    • 事件提供程序:Cloud Pub/Sub
    • 事件google.cloud.pubsub.topic.v1.messagePublished
  7. 选择 Cloud Pub/Sub 主题字段中,选择一个现有主题,或点击创建主题创建一个新主题。您的函数会订阅此主题。记下主题的名称,稍后您将会用到。

    • 如果出现提示,请点击授予,以允许 Pub/Sub 服务创建调用该函数所需的身份令牌。
  8. 服务帐号字段中,点击创建新服务帐号

    1. 输入服务帐号的名称,然后点击创建。 Eventarc 会使用此服务帐号通过 Pub/Sub 服务的身份令牌调用函数。

    2. 向此服务帐号授予对项目的访问权限部分中,选择 Cloud Run Invoker 角色。这将授予该服务帐号调用您的第 2 代函数的权限。

    3. 点击完成

  9. 请勿选择失败时重试。点击保存触发器

  10. 展开运行时、构建、连接和安全设置部分,然后选择运行时标签页。

  11. 运行时服务帐号下的服务帐号字段中,点击创建。服务帐号创建流程将在新标签页中打开。此服务帐号是 Cloud Function 在运行时拥有的身份。

    1. 输入服务帐号的名称。
    2. 点击创建并继续
    3. 点击完成

    您将被重定向到 Google Cloud 控制台的服务帐号页面。 您可以关闭此标签页了。

  12. 返回函数创建页面上的服务帐号字段,点击刷新,然后选择您刚刚创建的服务帐号。

  13. 点击下一步。如果系统提示您启用任何所需的 API,请点击启用

  14. 请勿修改默认语言和示例代码。该代码不使用任何云服务,也不需要启用其他权限。点击部署

创建 Cloud Scheduler 作业

  1. 在 Google Cloud 控制台中,转到 Cloud Scheduler 页面。

    转到 Cloud Scheduler

  2. 点击创建作业

  3. 输入作业名称,选择运行作业的区域,并根据需要添加说明。

  4. 使用 unix-cron 格式指定作业的频率

    30 16 * * 7
    

    如需了解详情,请参阅配置 Cron 作业时间表

  5. 选择您所在的时区。

  6. 点击继续

  7. 配置执行部分中,选择 Pub/Sub 作为目标类型。

  8. 选择您的 Pub/Sub 主题。

  9. 添加要发送到目标的简短 Message 字符串。

  10. 点击创建

您现在拥有一项 Cron 作业,可在星期日 16:30 向您的 Pub/Sub 主题发送消息。您的 Cloud Function 已订阅该主题。

运行作业

您现在可以运行您创建的作业了。

  1. 在 Google Cloud Console 中,前往 Cloud Scheduler 页面。

    转到 Cloud Scheduler

  2. 选择您创建的作业。

  3. 点击 Force run

    由于需要进行一些配置,在项目中创建的第一个作业在首次调用时可能需要几分钟时间才能运行。

  4. 请注意 Status of last execution(上次执行的状态)列。作业运行后,此列应显示“Success”。

恭喜!您刚刚使用控制台查看了运行向 Pub/Sub 发送一条消息的 cron 作业的结果。接下来,您将了解如何验证您的 Cloud Function 是否成功执行。

验证 Cloud Functions 中的结果

如需验证您的 Cron 作业是否成功触发 Cloud Function,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Cloud Functions 页面。

    转到 Cloud Functions

  2. 点击函数名称。

  3. 函数详细信息页面将打开。每秒调用次数图表会显示您对函数的第一次调用。如需查看有关调用的详细信息,请点击日志

恭喜!你的函数已经得到执行。

清理

为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,请执行以下操作:

删除 Cloud Scheduler 作业

  1. 在 Google Cloud 控制台中,转到 Cloud Scheduler 页面。

    前往 Scheduler

  2. 选择作业旁边的复选框。

  3. 点击 删除并确认删除。

删除 Pub/Sub 主题

  1. 在 Google Cloud 控制台中,转到 Cloud Pub/Sub 页面。

    前往 Pub/Sub

  2. 选中您的主题旁边的复选框。

  3. 点击 删除并确认删除。

删除 Cloud Functions 函数

  1. 在 Google Cloud 控制台中,转到 Cloud Functions 页面。

    转到 Cloud Functions

  2. 选中函数旁边的复选框。

  3. 点击 删除并确认删除。

删除服务帐号

  1. 在 Google Cloud 控制台中,转到服务账号页面。

    转到“服务账号”

  2. 选中您创建的服务帐号旁边的复选框。

  3. 点击 删除并确认删除。

停用 API

如果您在学习本教程的过程中启用了任何 API(例如 Eventarc、Cloud Functions 或 Pub/Sub API),请停用这些 API。停用 API 会影响对项目的 API 的访问权限,因此,如果项目中的其他资源使用了 API,请勿停用 API。

  1. 在 Google Cloud 控制台中,转到 API 和服务页面。

    进入“API 和服务”

  2. 点击您想要禁用的 API。系统随即会显示描述该 API 的页面。

  3. 点击 停用 API

删除项目

如果您仅为本教程创建了一个项目,可以将其删除。

  1. 在 Google Cloud 控制台中,进入管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。