接收来自 Cloud Storage(Google Cloud 控制台)的直接事件

本快速入门介绍如何在未经身份验证的 Cloud Run 服务中接收来自 Cloud Storage 的直接事件。

您可以配置通知触发以响应 Cloud Storage 存储桶内的各种事件 - 对象创建、删除、归档和元数据更新。如需了解详情,请参阅创建触发器以将 Cloud Storage 事件路由到 Cloud Run

您可以使用 Google Cloud 控制台完成本快速入门。如需了解 Google Cloud CLI 的使用说明,请参阅接收来自 Cloud Storage 的直接事件 (gcloud CLI)

在本快速入门中,您将执行以下操作:

  1. 创建一个 Cloud Storage 存储桶作为事件来源。

  2. 将示例服务部署到 Cloud Run 以接收事件。

  3. 创建 Eventarc 触发器以过滤并路由事件。

  4. 通过将文件上传到 Cloud Storage 存储桶来生成事件,并在 Cloud Run 日志中查看该事件。


如需在 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 and Eventarc APIs.

    Enable the APIs

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

    Go to project selector

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

  7. Enable the Cloud Build and Eventarc APIs.

    Enable the APIs

创建 Cloud Storage 存储桶

本快速入门使用 Cloud Storage 作为事件来源。

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

    转到 Cloud Storage

  2. 点击 创建

  3. 为您的存储桶输入一个唯一的名称

    例如 hello-bucket

  4. 点击继续

  5. 对于位置类型,请选择区域,然后选择 us-central1(爱荷华)

  6. 接受其他默认设置。

  7. 点击创建

创建事件来源后,您便可以将事件接收器服务部署到 Cloud Run。

将事件接收器服务部署到 Cloud Run

部署接收和记录事件的示例 Cloud Run 服务。

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

    转到 Cloud Run

  2. 点击 创建服务

  3. 创建服务表单中:

    1. 选择从现有容器映像部署一个修订版本

    2. 点击使用示例容器进行测试

    3. 区域列表中,选择 us-central1(爱荷华)作为服务位置。

    4. 对于身份验证,请选择允许未通过身份验证的调用

    5. 如需部署示例容器映像,请点击创建

hello 服务的部署最多可能需要两分钟才能完成。

创建 Eventarc 触发器

Eventarc 触发器会将来自 Cloud Storage 存储桶的事件发送到示例 Cloud Run 服务。

  1. 在 Google Cloud 控制台中,进入 Eventarc 页面。

    转到“触发器”

  2. 点击 创建触发器

  3. 输入触发器名称

    例如 hello-trigger

  4. 选择触发器类型

    • 第一方:过滤从 Google Cloud 提供方(直接或通过 Cloud Audit Logs 条目)或使用 Pub/Sub 消息的提供商发送的事件。
    • 第三方:过滤直接从第三方提供方发送的事件。
  5. 事件提供方列表中,选择 Google 来源 > Cloud Storage

  6. 事件类型列表中,选择直接 > google.cloud.storage.object.v1.finalized

  7. 存储桶部分,选择您之前创建的 hello-bucket Cloud Storage 存储桶。

  8. 如果出现提示,请授予以下权限:

    • iam.serviceAccountTokenCreator 角色授予 Pub/Sub 服务账号
    • pubsub.publisher 角色授予给 Cloud Storage 服务账号
  9. 使用默认计算服务账号作为调用您的服务的服务账号。

  10. 事件目标位置列表中,选择 Cloud Run

  11. Cloud Run 服务部分,选择您之前创建的示例 hello 服务。

  12. 点击创建

所有必要的权限传播到 Eventarc 服务代理可能需要几分钟时间。如果您收到 Permission denied while using the Eventarc Service Agent 错误,请等待几分钟,然后重试。触发器创建后,最长可能需要两分钟才能完全正常运行。

生成并查看事件

生成事件并确认 Eventarc 触发器是否按预期工作。

  1. 要生成事件,请执行以下操作:

    1. 使用文件名 random.txt 和文本“Hello World”创建文本文件。

    2. 在 Google Cloud 控制台中,转到 Cloud Storage 页面。

      进入“存储桶”

    3. 点击您创建的存储桶的名称。

    4. 对象标签页中,点击上传文件,然后上传 random.txt 文件。

    上传操作会生成事件,而 Cloud Run 服务会记录事件的消息。

  2. 如需查看日志条目,请执行以下操作:

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

      转到 Cloud Run

    2. 点击您创建的服务的名称。

    3. 如需检索此服务的所有修订版本的日志条目,请在服务详情页面中点击日志标签页。您可以按日志严重级别进行过滤。

    4. 查找类似如下的日志条目:

      Received event of type google.cloud.storage.object.v1.finalized. Event data: [...]

恭喜!您已成功将事件接收器服务部署到 Cloud Run,创建 Eventarc 触发器,在 Cloud Storage 中生成事件并在 Cloud Run 日志中查看该事件。

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

虽然当服务未在使用时 Cloud Run 不会产生费用,但您可能仍然需要为在 Container Registry 中存储容器映像Cloud Run 资源以及在 Cloud Storage 存储桶中存储文件付费。

您可以删除映像删除存储桶以及删除服务

要删除 Eventarc 触发器,请运行以下命令:

  1. 在 Google Cloud 控制台中,进入 Eventarc 页面。

    转到“触发器”

  2. 点击您创建的触发器的名称。

  3. 触发器详情页面上,点击 删除

或者,您也可以删除 Google Cloud 项目,以避免产生费用。删除 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.

后续步骤