安排事件驱动型 Cloud Run 函数


本教程介绍如何触发事件驱动型 Cloud Run 函数 使用 Cloud Scheduler 并定位 Pub/Sub 主题。如果函数应直接触发以响应 Google Cloud 项目中的事件(例如 Pub/Sub 主题中收到消息或 Cloud Storage 存储桶发生更改),可使用事件驱动型函数。

请注意,您也可以安排 HTTP 函数 方法是定位函数的 HTTP 端点如果您需要函数具有网址端点并响应 HTTP 请求(例如针对 webhook),可使用 HTTP 函数。如需了解详情,请参阅 Cloud Run 函数的类型

安排 Cloud Run 函数的执行是 Cloud Scheduler 的常见用例。在此教程中,您将学习以下操作:

  1. 创建一个简单的 Cloud Run 函数,用于订阅 Pub/Sub 主题。
  2. 创建一个 Cloud Scheduler 作业,该作业将消息发布到 Pub/Sub 主题。
  3. 运行 Cloud Scheduler 作业。
  4. 验证 Cloud Run 函数是否由 Cloud Scheduler 作业触发。

费用

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

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

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.

    Enable the APIs

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. 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.

    4. Click Create and continue.
    5. 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.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.

    Enable the APIs

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. 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.

    4. Click Create and continue.
    5. 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.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  10. 请注意,您必须授予 Cloud Run Invoker 角色,因为在 Cloud Run functions(第 2 代)中,您可以通过管理底层 Cloud Run 服务来获取调用权限。

  11. 默认情况下,Cloud Run 函数使用自动创建的 默认的 Compute Engine 服务账号 。您可以使用此服务账号来试用 本教程。不过,根据您的组织政策配置, 默认服务账号可能无法自动获得 自己的项目如果是这种情况, 向服务账号授予 以下角色:
    1. Artifact Registry Writer (roles/artifactregistry.writer)
    2. 日志写入者 (roles/logging.logWriter)
    3. Storage Object Viewer (roles/storage.objectViewer)

创建事件驱动的 Cloud Run 函数

创建可直接在响应事件时触发的事件驱动型函数 您的 Google Cloud 项目中;在本示例中,发布到 Pub/Sub 主题。

  1. 在 Google Cloud 控制台中,前往 Cloud Run 函数页面。

    前往 Cloud Run 函数

  2. 点击 创建函数

  3. 基本信息部分中,执行以下操作:

    1. 环境列表中,选择第 2 代
    2. 为函数输入一个名称。
    3. 区域列表中,选择一个区域。
  4. 触发器部分中,执行以下操作:

    1. 触发器类型列表中,选择 Cloud Pub/Sub
    2. Cloud Pub/Sub 主题列表中,选择现有主题或 要创建新主题,请点击创建主题。请注意主题名称为 您在后续步骤中会用到它。
    3. 点击更多选项

      系统随即会打开 Eventarc 触发器面板。

  5. Eventarc 触发器面板中,执行以下操作:

    1. 如果系统提示您允许 Pub/Sub 服务创建 调用函数所需的身份令牌,请点击授权
    2. 服务账号列表中,选择您要 凭据。
    3. 接受其他默认设置。
    4. 点击保存触发器

      Eventarc 触发器面板随即会关闭。

  6. 接受其他默认设置,然后点击下一步

  7. 请勿修改默认运行时语言和示例代码。该代码不会使用任何云服务,也不需要启用额外的权限。点击部署

创建 Cloud Scheduler 作业

创建具有 Pub/Sub 目标的 Cloud Scheduler 作业。

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

    前往 Cloud Scheduler

  2. 点击 创建作业

  3. 输入作业的名称。

  4. 区域列表中,选择一个区域。

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

    30 16 * * 7
    

    如需了解详情,请参阅 Cron 作业格式和时区

  6. 时区列表中,选择一个时区。

  7. 点击继续

  8. 目标类型列表中,选择 Pub/Sub

  9. 选择您之前创建的 Pub/Sub 主题。

  10. 消息正文字段中,输入一条要发送到您的 Pub/Sub 目标主题的字符串,例如:“Hello world!”

  11. 点击创建

您已创建一个 Cron 作业,它可向您的 Pub/Sub 发送消息 搜索主题。您的 Cloud Run 函数已订阅该服务 主题。

运行 Cloud Scheduler 作业

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

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

    前往 Cloud Scheduler

  2. 选中您创建的作业对应的复选框,然后点击强制运行

    初次调用时,项目中创建的第一项作业可能需要 只需几分钟即可配置和运行。

  3. 作业运行后,Status of last execution(上次执行状态)应指示 Success

验证 Cloud Run 函数中的结果

您可以验证您的 Cloud Run 函数是否已成功被 cron 作业触发并执行。

  1. 在 Google Cloud 控制台中,前往 Cloud Run 函数页面。

    前往 Cloud Run 函数

  2. 点击函数名称。

    函数详情页面随即打开,调用次数/秒图表会显示对该函数的首次调用。

  3. 点击日志标签页。

    您应会看到类似 Hello, YOUR_STRING! 的日志条目

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

删除项目

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

删除教程资源

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

    前往 Cloud Scheduler

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

  3. 点击 Delete(删除),然后确认删除操作。

  4. 在 Google Cloud 控制台中,前往 Pub/Sub 页面。

    转到 Pub/Sub

  5. 选中主题旁边的复选框。

  6. 点击 Delete(删除),然后确认删除操作。

  7. 在 Google Cloud 控制台中,前往 Cloud Run 函数页面。

    转到 Cloud Run 函数

  8. 选中您的函数旁边的复选框。

  9. 点击 删除,然后确认您的 删除。

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

    转到“服务账号”

  11. 选中您创建的服务账号旁边的复选框。

  12. 点击 Delete(删除),然后确认删除操作。

后续步骤