实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

Eventarc for Cloud Run

实验 1 小时 universal_currency_alt 1 个点数 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP773

Google Cloud 自学实验的徽标

概览

在本实验中,您将学习如何利用 Eventarc for Cloud Run 管理生成方与使用方之间的通信。生成方(即事件来源)提供原始数据。生成的数据会发送给使用方(即事件接收器),后者将使用传递来的信息。下图简略呈现了 Google Cloud 上此种方法的整体流程:

流程图,其中展示了数据从事件来源(生成方)经 Eventarc 进入事件接收器(使用方)的流程

生成方与使用方之间统一使用 Eventarc for Cloud Run 传递事件。上面的示例中使用了 Cloud Pub/Sub 传递生成的项目事件。

本实验结束时,您将能够把各种来源的事件传递到 Google Cloud 接收器和自定义接收器。

学习内容:

  • Eventarc for Cloud Run
  • 创建 Cloud Run 接收器
  • 创建 Cloud Pub/Sub 事件触发器
  • 创建审核日志事件触发器

前提条件

根据实验内容,建议您先熟悉以下对象:

  • Cloud Run
  • Cloud Pub/Sub
  • 日志记录

建议在无痕式浏览器窗口中进行此实验。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

任务 1. 设置环境

  1. 设置项目:
gcloud config set project {{{project_0.project_id | "PROJECT_ID"}}}
  1. 将 Cloud Run 区域设置为受支持的区域
gcloud config set run/region {{{project_0.default_region | "REGION"}}}
  1. 将 Cloud Run 平台默认值设置为 managed
gcloud config set run/platform managed
  1. 设置 Eventarc for Cloud Run 的默认位置:
gcloud config set eventarc/location {{{project_0.default_region | "REGION"}}}

任务 2. 启用服务账号

接下来,配置审核日志触发器所需的几个服务账号。

  1. 将 Project Number 存储在环境变量中:
export PROJECT_NUMBER="$(gcloud projects list \ --filter=$(gcloud config get-value project) \ --format='value(PROJECT_NUMBER)')"
  1. 向默认 Compute Engine 服务账号授予 eventarc.admin 角色:
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --role='roles/eventarc.admin'

点击检查我的进度,验证您已完成上述任务。 启用服务账号。

任务 3. 发现事件

您可以使用命令行发现已注册的事件来源和事件类型。

  1. 如需查看一系列不同类型的事件,请运行以下命令:
gcloud eventarc providers list

输出:

NAME: datamigration.googleapis.com LOCATION: us-central1 NAME: apigeeregistry.googleapis.com LOCATION: us-central1 NAME: networkconnectivity.googleapis.com LOCATION: us-central1 NAME: dataplex.googleapis.com LOCATION: us-central1 NAME: datafusion.googleapis.com LOCATION: us-central1 NAME: pubsub.googleapis.com LOCATION: us-central1
  1. 如需查看每个事件的详细信息,请运行以下命令:
gcloud eventarc providers describe \ pubsub.googleapis.com

输出:

displayName: Cloud Pub/Sub eventTypes: - description: A message is published to the specified Pub/Sub topic. filteringAttributes: - attribute: type required: true type: google.cloud.pubsub.topic.v1.messagePublished name: projects/{{{project_0.project_id | "PROJECT_ID"}}}/locations/{{{project_0.default_region | "REGION"}}}/providers/pubsub.googleapis.com

任务 4. 创建 Cloud Run 接收器

  1. 设置服务的相应环境变量:
export SERVICE_NAME=event-display
  1. 设置映像的相应环境变量:
export IMAGE_NAME="gcr.io/cloudrun/hello"
  1. 将容器化应用部署到 Cloud Run:
gcloud run deploy ${SERVICE_NAME} \ --image ${IMAGE_NAME} \ --allow-unauthenticated \ --max-instances=3

部署成功后,命令行会显示服务网址。此时,服务已启动并正常运行。

现在,您可以在任何浏览器窗口中打开该服务网址,访问您部署的容器。

点击检查我的进度,验证您已完成上述任务。 创建 Cloud Run 接收器。

任务 5. 创建 Cloud Pub/Sub 事件触发器

Cloud Pub/Sub 是接收事件的一种途径。自定义应用可以将消息发布到 Cloud Pub/Sub,然后这些消息可经由 Eventarc for Cloud Run 传递到 Google Cloud Run 接收器。

创建触发器

  1. 首先,详细了解构建 Cloud Pub/Sub 事件触发器所需的参数:
gcloud eventarc providers describe \ pubsub.googleapis.com
  1. 创建触发器,以筛选发布到 Cloud Pub/Sub 主题的事件,仅将符合条件的事件传递到您部署的 Cloud Run 服务:
gcloud eventarc triggers create trigger-pubsub \ --destination-run-service=${SERVICE_NAME} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

查找主题

  • Pub/Sub 触发器会在后台创建一个 Pub/Sub 主题。找到该主题,并将其分配给一个环境变量:
  1. 导出 TOPIC ID
export TOPIC_ID=$(gcloud eventarc triggers describe trigger-pubsub \ --format='value(transport.pubsub.topic)')
  1. 确认 TOPIC ID 可用
echo ${TOPIC_ID}

输出:

projects/{{{project_0.project_id | "PROJECT_ID"}}}/locations/{{{project_0.default_region | "REGION"}}}/providers/pubsub.googleapis.com

测试触发器

  1. 您可以通过列出所有触发器来检查触发器是否已创建:
gcloud eventarc triggers list

输出:

NAME: trigger-pubsub TYPE: google.cloud.pubsub.topic.v1.messagePublished DESTINATION: Cloud Run service: event-display ACTIVE: Yes LOCATION: {{{project_0.default_region | "REGION"}}} 注意:您可能需要等待触发器创建信息传播完毕,最多 5 分钟后,它会开始筛选事件。
  1. 要想模拟自定义应用发送消息的情景,您可以使用 gcloud 命令来触发事件:
gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
  1. 导航菜单中,依次点击无服务器 > Cloud Run,然后点击 event display

  2. 点击日志

您创建的 Cloud Run 接收器会记录收到的消息正文。您可以在 Cloud Run 实例的“日志”部分中看到下列内容:

“日志”标签页,其中显示 event-display 日志列表

点击检查我的进度,验证您已完成上述任务。 创建 Cloud Pub/Sub 事件触发器。

删除触发器

  • 测试完成后,您可以删除触发器:

    gcloud eventarc triggers delete trigger-pubsub

任务 6. 创建审核日志事件触发器

接下来,设置一个触发器,监听来自审核日志的事件。您将监听审核日志中的 Cloud Storage 事件。

创建存储桶

  1. 创建存储桶的相应环境变量:
export BUCKET_NAME=$(gcloud config get-value project)-cr-bucket
  1. 在部署了 Cloud Run 服务的同一区域中创建一个 Cloud Storage 存储桶:
gsutil mb -p $(gcloud config get-value project) \ -l $(gcloud config get-value run/region) \ gs://${BUCKET_NAME}/

点击检查我的进度,验证您已完成上述任务。 创建存储桶。

启用审核日志

要想接收来自某一服务的事件,您需要启用审核日志。

  1. 导航菜单中,依次选择 IAM 和管理 > 审核日志

  2. 在服务列表中,选中 Google Cloud Storage 对应的复选框。

  3. 在右侧,点击日志类型选项卡。管理员写入默认处于选中状态,另请确保选中管理员读取数据读取数据写入,然后点击保存

测试审核日志

要想了解如何识别参数,您需要设置一个真实的触发器并执行真实的操作。

  1. 运行以下命令,创建一个名为 random.txt 的文本文件:
echo "Hello World" > random.txt
  1. 将文件 random.txt 上传到存储桶:
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt

现在就能看到此次更新所生成的审核日志。

  1. 在 Cloud 控制台的导航菜单中,依次点击日志记录 > Logs Explorer

  2. 资源下,依次选择 GCS 存储桶 > [Bucket Name] > 位置,然后选择您的存储桶及其位置。点击应用

Logs Explorer 页面

注意:审核日志需要等待一段时间才能显示在日志查看器界面中。如果您没有在资源列表中看到 GCS 存储桶,请稍等片刻,然后再试。
  1. 点击运行查询

运行查询后,您将看到存储桶的相关日志。其中一项应该是 storage.buckets.create

  1. 请记下 serviceNamemethodNameresourceName。创建触发器时将会用到这些变量。

创建触发器

现在,您可以创建审核日志事件触发器了。

  1. 详细了解构建触发器所需的参数:
gcloud eventarc providers describe cloudaudit.googleapis.com
  1. 创建含有正确过滤条件的触发器:
gcloud eventarc triggers create trigger-auditlog \ --destination-run-service=${SERVICE_NAME} \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com 注意:resourceName 参数

  • 这里有一个可选的 resourceName 字段。如果提供完整的资源路径(例如 projects/_/buckets/test123),则会筛选出与特定资源相关的事件。如果完全不提供资源路径,则会筛选出与所提供 serviceName 和 methodName 对应的任意资源相关的事件。不完整的资源名称(例如 projects/project-id)是不可接受的,将会引发故障。
  • 如果 methodsName 属于“create”类型(例如用于创建 Cloud Storage 存储桶的 storage.buckets.create),最好把 resourceName 留空,因为 resourceName 可能会根据某些 serviceName 动态生成,而无法提前预测。
  • 如果 methodsName 属于“read”、“update”或“delete”类型(例如用于更新特定 Cloud Storage 存储桶的 storage.buckets.update),则可以指定完整的资源路径。

测试触发器

  1. 列出所有触发器,以确认触发器已成功创建:
gcloud eventarc triggers list

输出:

NAME: trigger-auditlog TYPE: google.cloud.audit.log.v1.written DESTINATION: Cloud Run service: event-display ACTIVE: Yes LOCATION: {{{project_0.default_region | "REGION"}}}
  1. 等待触发器创建信息传播完毕,最多 10 分钟后,它会开始过滤事件。

准备就绪后,它会筛选出 create 事件并将其发送到该服务。现在,您可以触发一个事件了。

  1. 像之前那样将同一文件上传到 Cloud Storage 存储桶:
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
  1. 前往导航菜单 > Cloud Run,查看 Cloud Run 服务的日志,此时您应该会看到已接收的事件。

点击检查我的进度,验证您已完成上述任务。 创建审核日志事件触发器。

删除触发器

  • 测试完成后,您可以删除触发器:
gcloud eventarc triggers delete trigger-auditlog

恭喜!

您已成功掌握了 Google Cloud 基础架构上的 Eventrac for Cloud Run。在本实验中,您执行了以下任务:

  • Eventrac for Cloud Run
  • 创建 Cloud Run 接收器
  • 创建 Cloud Pub/Sub 事件触发器
  • 创建审核日志事件触发器

了解详情/后续步骤

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 5 月 2 日

上次测试实验的时间:2024 年 5 月 2 日

版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。