准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Create the service account and assign roles
/ 20
Create the API proxy
/ 20
Call the Natural Language API
/ 20
Publish a message to Pub/Sub for negative comments
/ 20
Add the MessageLogging policy
/ 20
Apigee 是一个用于开发和管理 API 的平台。Apigee 可帮助您利用 Google Cloud 服务,例如 Pub/Sub、Cloud Logging 或提供 REST API 的任何其他云服务。在本实验中,您的 Apigee API 代理将利用多项 Google Cloud 服务。
在本实验中,您将通过 Apigee API 代理使用多项 Google Cloud 服务,以处理用户评论。
在本实验中,您将学习如何执行以下任务:
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
您也可以在“实验详细信息”窗格中找到“用户名”。
点击下一步。
复制下面的密码,然后将其粘贴到欢迎对话框中。
您也可以在“实验详细信息”窗格中找到“密码”。
点击下一步。
继续在后续页面中点击以完成相应操作:
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
点击 Google Cloud 控制台顶部的激活 Cloud Shell 。
在弹出的窗口中执行以下操作:
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID
gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
输出:
输出:
gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
在此任务中,您要启用 Apigee API 代理将使用的 API。
在 Cloud 控制台的导航菜单 () 中,依次前往 API 和服务 > 库。
在此页面上,您可以启用 Apigee API 代理将使用的 API。
在搜索 API 和服务框中,输入 Cloud Natural Language,然后按 Enter 键。
Cloud Natural Language API 可提供自然语言分析洞见,例如情感分析和实体识别。此 API 将用于判断某条评论是否表明用户感到不满。
点击 Cloud Natural Language API。
该 API 已启用。
您也可以使用 gcloud 命令启用 API。
在 Cloud Shell 中,使用以下命令启用所需的 API:
除了 Cloud Natural Language API 之外,您还将启用 Pub/Sub API 和 Cloud Logging API。
当 Natural Language API 指示用户不满意时,系统会使用 Pub/Sub 向主题发布消息。您可以选择创建一个 Cloud Functions 函数并针对每条消息运行该函数,与用户联系尝试解决问题,提高客户满意度。
系统将使用 Cloud Logging 捕获收到的每条评论的日志条目。这些日志可能包含内部 API 详情,有助于检测服务或应用的问题。
在此任务中,您将创建一个服务账号,供 Apigee 代理使用。
在导航菜单 () 中,依次前往 IAM 和管理 > 服务账号。
点击 + 创建服务账号。
对于服务账号名称,指定以下内容:
此服务账号将允许您的 Apigee API 代理访问您指定的 Google Cloud 服务。
点击创建并继续。
对于选择角色,选择 Pub/Sub > Pub/Sub Publisher。
Apigee API 代理将向 Pub/Sub 主题发布消息。
点击 + 添加其他角色。
对于选择角色,选择 Logging > Logs Writer。
Apigee API 代理会将日志消息写入 Cloud Logging。
点击完成。
服务账号已创建。
点击“检查我的进度”以验证是否完成了以下目标:
在此任务中,您将创建 Apigee API 代理。该 API 代理将使用政策来调用服务,因此不需要目标。
如需打开 Apigee 控制台,请执行以下操作:
Apigee,然后点击搜索结果中的 Apigee API Management。Apigee 控制台会随即打开,着陆页会显示指向常用位置的快捷链接。
Apigee 现在已固定到导航菜单中。
在导航菜单中,依次选择代理开发 > API 代理。
如需使用代理向导创建新代理,请点击创建。
对于 Proxy template(代理模板),依次选择 General template > No target(“常规模板”>“无目标”)。
该代理不会使用后端服务。与外部服务的所有通信都将通过政策完成。
在 Proxy details(代理详情)部分,指定以下内容:
| 属性 | 值 |
|---|---|
| 代理名称 | services-v1 |
| 基本路径 | /services/v1 |
/services/v1 作为基本路径,而不是 /services-v1。
点击下一步。
将 Deploy (optional)(部署 [可选])设置保留默认值,然后点击创建。
点击代理编辑器中的开发标签页。
在左侧窗格中,依次选择 Proxy endpoints(代理端点)> 默认。
点击响应窗格上方的 + 按钮。
在 Add conditional flow(添加条件流)对话框中,指定以下值:
| 属性 | 值 |
|---|---|
| 流名称 | postComment |
| 说明 | 发布特定类别的评论 |
| 条件类型 | 选择“路径”和“动词” |
| 路径 | /comments |
| 动词 | 选择“POST”(发布) |
将目标网址留空。
点击添加。
点击保存。如果您收到代理已另存为新修订版本的通知,请点击另存为新修订版本。
点击部署。
对于环境,选择 eval。
对于服务账号,指定服务账号的邮箱:
点击部署,然后点击确认。
等待部署完成。
点击“检查我的进度”以验证是否完成了以下目标:
在此任务中,您将添加 ServiceCallout 政策,以调用 Natural Language API 来判断传入评论的情感。
POST /comments 资源会使用 JSON 载荷,其中包含两个参数:comment(用户输入的自由文本)和 category(用于指定评论类型)。ExtractVariables 政策将提取输入。
在“流”窗格中,点击“请求”窗格中 postComment 流旁边的 +。
在 Add policy step(添加政策步骤)对话框中,点击创建新政策。
在 Select Policy(选择政策)下拉菜单中,从“中介”部分选择 Extract Variables(提取变量)政策类型。
指定下列内容:
| 属性 | 值 |
|---|---|
| 显示名称 | EV-ExtractRequest |
| 名称 | EV-ExtractRequest |
点击添加。
点击 EV-ExtractRequest 政策,然后将 ExtractVariables XML 配置替换为:
此政策会从 POST /comments JSON 请求中提取“comment”和“category”。“IgnoreUnresolvedVariables”元素设置为“false”,这会导致在未指定这两项输入时引发故障。
系统将使用 ServiceCallout 政策来调用 Natural Language API,以返回评论的情感分析结果。
点击 postComment 流(如果它未突出显示),然后点击“响应”窗格中 postComment 流旁边的 +。
Natural Language API 调用的响应将返回给调用方。
在 Add policy step(添加政策步骤)对话框中,点击创建新政策。
在 Select Policy(选择政策)下拉菜单中,从“扩展程序”部分选择 Service Callout(服务调用)政策类型。
指定下列内容:
| 属性 | 值 |
|---|---|
| 显示名称 | SC-NaturalLanguage |
| 名称 | SC-NaturalLanguage |
点击添加。
该流应如下所示:
点击 SC-NaturalLanguage 政策。
将 ServiceCallout XML 配置替换为:
ServiceCallout 政策的“Request”部分会指定发布到服务的请求。此载荷的格式只适用于 Natural Language API。
“Response”元素指示 Natural Language API 响应将存储在 response 消息中。
“HTTPTargetConnection”部分指定要调用的服务网址。该网址以及请求和响应格式可在 Natural Language API 参考文档中找到。
“Authentication”部分指定 Google Cloud API 的身份验证。系统会自动将 Google OAuth 访问令牌添加到调用请求中。“Scope”部分指出访问令牌将用于提供对 Natural Language API 的访问权限。
点击保存。
在 Cloud Shell 中,粘贴并运行以下一组命令:
此系列命令使用 Apigee API 来判断 Apigee 运行时实例是否已创建,以及 eval 环境是否已附加。
等待实例准备就绪。
当屏幕上显示文本 ***ORG IS READY TO USE*** 时,表示实例已准备就绪。Apigee 组织可能已在您开始本实验之前创建,因此您可能不必等待实例创建完成。
如果您在等待组织准备就绪,可以探索 Google Cloud 上的 AI 产品和服务。
返回 services-v1 API 代理,然后点击开发标签页。
点击部署。
对于环境,选择 eval。
对于服务账号,指定服务账号的邮箱:
依次点击部署和确认。
点击概览标签页,然后等待 eval 部署状态显示代理已部署。
点击“检查我的进度”以验证是否完成了以下目标:
Apigee 组织中的 eval 环境可以使用主机名 eval.example.com 进行调用。该主机名的 DNS 条目已在您的项目中创建,并会解析为 Apigee 运行时实例的 IP 地址。此 DNS 条目是在专用区域中创建的,这意味着它仅在内部网络中可见。
Cloud Shell 并不位于内部网络中,因此 Cloud Shell 命令无法解析此 DNS 条目。您项目中的虚拟机 (VM) 可以访问专用区域 DNS。系统自动创建了一个名为 apigeex-test-vm 的虚拟机。您可以使用此机器来调用 API 代理。
在 Cloud Shell 中,打开与测试虚拟机的 SSH 连接:
如果系统询问 Do you want to continue (Y/n)?,请输入 Y。
对于 Cloud Shell 中提出的每个问题,按 Enter 键或 Return 键来指定默认输入。
您的登录身份是项目的所有者,因此可以通过 SSH 连接到此机器。
您的 Cloud Shell 会话现在正在虚拟机内运行。
在 eval 环境中调用已部署的 services-v1 API 代理:
Natural Language API 的响应如下所示:
documentSentiment 的分数范围为 1 到 -1,其中 1 表示极正面,-1 表示极负面。在本例中,情感分析结果为非常正面。
再次调用 API 代理:
对于此评论,情感分析结果为非常负面。
输入命令 exit 以退出 SSH 会话并返回到 Cloud Shell。
在此任务中,您将添加 PublishMessage 政策,以便在收到负面评论时向 Pub/Sub 主题发布 Pub/Sub 消息。主题的订阅方可以运行工作流程,尝试为评论者解决问题。
系统将创建与每个类别对应的 Pub/Sub 主题。必须先创建主题,然后才能向主题发布消息。
在导航菜单 () 中,依次前往 Pub/Sub > 主题。
点击 + 创建主题。
对于主题 ID,输入 apigee-services-v1-delivery-reviews,然后点击创建。
新主题和新订阅已创建。
返回 Cloud 控制台中的 Apigee。
在左侧导航菜单中,依次选择代理开发 > API 代理,然后点击 services-v1。
打开开发标签页。点击 postComment 流。
在“流”窗格中,点击“响应”窗格中 postComment 流旁边的 +。
在 Add policy step(添加政策步骤)对话框中,点击创建新政策。
在 Select Policy(选择政策)下拉菜单中,从“中介”部分选择 Extract Variables(提取变量)政策类型。
指定下列内容:
| 属性 | 值 |
|---|---|
| 显示名称 | EV-ExtractSentiment |
| 名称 | EV-ExtractSentiment |
点击添加,然后点击 EV-ExtractSentiment 政策。
将 ExtractVariables XML 配置替换为:
点击 postComment 流,然后点击“Response”流下方的 + 按钮。
在“扩展程序”部分中,选择 发布消息政策类型。
指定下列内容:
| 属性 | 值 |
|---|---|
| 显示名称 | PM-PublishScore |
| 名称 | PM-PublishScore |
点击添加,然后点击 PM-PublishScore 政策。
将 PublishMessage XML 配置替换为:
点击保存。如果您收到代理已另存为新修订版本的通知,请点击另存为新修订版本。
“response.content”是 Natural Language API 返回的载荷,将是 Pub/Sub 消息。请求中的 category 用于构建 Pub/Sub 主题名称。
任何不正确的类别都会导致主题名称不存在。在生产 API 中,您需要先验证指定的类别,然后再尝试发布 Pub/Sub 消息。在此例中,政策中的“continueOnError”设置为“true”,因此当主题不存在时,不会引发故障。
条件可用于选择性地跳过流中的政策。
在代理的导航菜单中,点击 Proxy Endpoints(代理端点)下的默认。
系统会显示 ProxyEndpoint 配置。
如需向 PM-PublishScore 步骤添加条件,请将以下内容:
替换为:
只有当情感分数小于 0 时,PublishMessage 政策才会执行。
点击保存。如果您收到代理已另存为新修订版本的通知,请点击另存为新修订版本。
点击部署。
对于环境,选择 eval。
对于服务账号,指定服务账号的邮箱:
依次点击部署和确认。
点击“检查我的进度”以验证是否完成了以下目标:
在 Cloud Shell 中,打开与测试虚拟机的 SSH 连接:
如果系统提示您进行授权,请点击授权。
在 eval 环境中调用已部署的 services-v1 API 代理:
在导航菜单 () 中,依次前往 Pub/Sub > 主题。
点击 apigee-services-v1-delivery-reviews 主题。
向下滚动到底部,然后点击 apigee-services-v1-delivery-reviews-sub 订阅。
点击消息标签页,然后点击拉取。
在消息中,点击“查看所有行内容”下拉菜单按钮。
您可以查看针对带有负面情感的任何评论发送的 JSON 载荷。
在此任务中,您将添加 MessageLogging 政策,以将消息记录到 Cloud Logging。
ProxyEndpoint 具有一个名为 PostClientFlow 的可选流。附加到此流的政策会在响应已返回给调用方之后运行。这可能是执行消息日志记录的理想位置,因为日志记录不会为请求增加额外的延迟时间。
返回 Apigee 标签页,如有必要,返回 services-v1“开发”页面。
在代理的导航菜单中,点击 Proxy Endpoints(代理端点)下的默认。
系统会显示 ProxyEndpoint 配置。
在 HTTPProxyConnection 部分的正上方,添加以下行:
添加此行后,ProxyEndpoint 代码的底部应如下所示:
这会向 ProxyEndpoint 添加一个空的 PostClientFlow。
在代理的导航菜单中,点击 Proxy Endpoints(代理端点)下的 PostClientFlow,然后点击“Response”流下方的 + 按钮。
在 Add policy step(添加政策步骤)对话框中,点击创建新政策。
在 Select Policy(选择政策)下拉菜单中,从“扩展程序”部分选择 Message Logging(消息日志记录)政策类型。
指定下列内容:
| 属性 | 值 |
|---|---|
| 显示名称 | ML-LogToCloudLogging |
| 名称 | ML-LogToCloudLogging |
点击添加,然后点击 ML-LogToCloudLogging 政策。
将 PublishMessage XML 配置替换为:
“CloudLogging”部分会指定要记录到 Cloud Logging 的信息。该政策使用代理的名称作为 LogName 的一部分,以便在 Cloud Logging 中轻松查找。
此政策中的消息采用 JSON 格式,但您可以在日志中使用任何类型的文本消息。日志的内容通常应包含有助于您调试任何问题的代理流变量。例如,如果 Pub/Sub 消息未发送,变量“publishmessage.failed”将为“true”。
您还可以向已记录的消息添加标签,以便对消息内容进行分类。
点击保存。如果您收到代理已另存为新修订版本的通知,请点击另存为新修订版本。
点击部署。
对于环境,选择 eval。
对于服务账号,指定服务账号的邮箱:
依次点击部署和确认。
等待部署完成。
点击“检查我的进度”以验证是否完成了以下目标:
在 Cloud Shell 中,如果您的 SSH 连接已关闭,请打开与测试虚拟机的 SSH 连接:
如果系统提示您进行授权,请点击授权。
在 eval 环境中调用已部署的 services-v1 API 代理:
所提供的类别 (invalid-category) 没有对应的 Pub/Sub 主题。
在导航菜单 () 中,依次前往 Logging > Logs Explorer。
在查询框中,输入以下查询:
点击运行查询。
在“查询结果”窗格中展开日志条目,然后展开 jsonPayload。
展开日志条目后,系统会显示记录的 JSON 消息和其他元数据。jsonPayload 应如下所示:
“publishFailed”为“true”,因为未为此类别创建主题。精心设计的日志有助于发现 API 代理和后端服务中的问题。
在本实验中,您启用了 Google Cloud API 并创建了服务账号。您通过使用 ServiceCallout 政策调用了 Cloud Natural Language API,利用了 Apigee 提供的服务账号身份验证。您使用了 PublishMessage 政策向 Pub/Sub 主题发布消息。最后,您使用了 MessageLogging 政策将消息记录到 Cloud Logging。
本手册的最后更新时间:2025 年 8 月 8 日
本手册的最后测试时间:2025 年 8 月 8 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验