GSP773

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

生成方与使用方之间统一使用 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 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 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 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 设置环境
- 设置项目:
gcloud config set project {{{project_0.project_id | "PROJECT_ID"}}}
- 将 Cloud Run 区域设置为受支持的区域:
gcloud config set run/region {{{project_0.default_region | "REGION"}}}
- 将 Cloud Run 平台默认值设置为
managed:
gcloud config set run/platform managed
- 设置 Eventarc for Cloud Run 的默认位置:
gcloud config set eventarc/location {{{project_0.default_region | "REGION"}}}
任务 2. 启用服务账号
接下来,配置审核日志触发器所需的几个服务账号。
- 将 Project Number 存储在环境变量中:
export PROJECT_NUMBER="$(gcloud projects list \
--filter=$(gcloud config get-value project) \
--format='value(PROJECT_NUMBER)')"
- 向默认 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. 发现事件
您可以使用命令行发现已注册的事件来源和事件类型。
- 如需查看一系列不同类型的事件,请运行以下命令:
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
- 如需查看每个事件的详细信息,请运行以下命令:
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 接收器
- 设置服务的相应环境变量:
export SERVICE_NAME=event-display
- 设置映像的相应环境变量:
export IMAGE_NAME="gcr.io/cloudrun/hello"
- 将容器化应用部署到 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 接收器。
创建触发器
- 首先,详细了解构建 Cloud Pub/Sub 事件触发器所需的参数:
gcloud eventarc providers describe \
pubsub.googleapis.com
- 创建触发器,以筛选发布到 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 主题。找到该主题,并将其分配给一个环境变量:
- 导出 TOPIC ID
export TOPIC_ID=$(gcloud eventarc triggers describe trigger-pubsub \
--format='value(transport.pubsub.topic)')
- 确认 TOPIC ID 可用
echo ${TOPIC_ID}
输出:
projects/{{{project_0.project_id | "PROJECT_ID"}}}/locations/{{{project_0.default_region | "REGION"}}}/providers/pubsub.googleapis.com
测试触发器
- 您可以通过列出所有触发器来检查触发器是否已创建:
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 分钟后,它会开始筛选事件。
- 要想模拟自定义应用发送消息的情景,您可以使用
gcloud 命令来触发事件:
gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
-
在导航菜单中,依次点击无服务器 > Cloud Run,然后点击 event display。
-
点击日志。
您创建的 Cloud Run 接收器会记录收到的消息正文。您可以在 Cloud Run 实例的“日志”部分中看到下列内容:

点击检查我的进度,验证您已完成上述任务。
创建 Cloud Pub/Sub 事件触发器。
删除触发器
-
测试完成后,您可以删除触发器:
gcloud eventarc triggers delete trigger-pubsub
任务 6. 创建审核日志事件触发器
接下来,设置一个触发器,监听来自审核日志的事件。您将监听审核日志中的 Cloud Storage 事件。
创建存储桶
- 创建存储桶的相应环境变量:
export BUCKET_NAME=$(gcloud config get-value project)-cr-bucket
- 在部署了 Cloud Run 服务的同一区域中创建一个 Cloud Storage 存储桶:
gsutil mb -p $(gcloud config get-value project) \
-l $(gcloud config get-value run/region) \
gs://${BUCKET_NAME}/
点击检查我的进度,验证您已完成上述任务。
创建存储桶。
启用审核日志
要想接收来自某一服务的事件,您需要启用审核日志。
-
在导航菜单中,依次选择 IAM 和管理 > 审核日志。
-
在服务列表中,选中 Google Cloud Storage 对应的复选框。
-
在右侧,点击日志类型选项卡。管理员写入默认处于选中状态,另请确保选中管理员读取、数据读取、数据写入,然后点击保存。
测试审核日志
要想了解如何识别参数,您需要设置一个真实的触发器并执行真实的操作。
- 运行以下命令,创建一个名为
random.txt 的文本文件:
echo "Hello World" > random.txt
- 将文件
random.txt 上传到存储桶:
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
现在就能看到此次更新所生成的审核日志。
-
在 Cloud 控制台的导航菜单中,依次点击日志记录 > Logs Explorer。
-
在资源下,依次选择 GCS 存储桶 > [Bucket Name] > 位置,然后选择您的存储桶及其位置。点击应用。

注意:审核日志需要等待一段时间才能显示在日志查看器界面中。如果您没有在资源列表中看到 GCS 存储桶,请稍等片刻,然后再试。
- 点击运行查询。
运行查询后,您将看到存储桶的相关日志。其中一项应该是 storage.buckets.create。
- 请记下
serviceName、methodName 和 resourceName。创建触发器时将会用到这些变量。
创建触发器
现在,您可以创建审核日志事件触发器了。
- 详细了解构建触发器所需的参数:
gcloud eventarc providers describe cloudaudit.googleapis.com
- 创建含有正确过滤条件的触发器:
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),则可以指定完整的资源路径。
测试触发器
- 列出所有触发器,以确认触发器已成功创建:
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"}}}
- 等待触发器创建信息传播完毕,最多 10 分钟后,它会开始过滤事件。
准备就绪后,它会筛选出 create 事件并将其发送到该服务。现在,您可以触发一个事件了。
- 像之前那样将同一文件上传到 Cloud Storage 存储桶:
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
- 前往导航菜单 > 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 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。