1. 蓝图:打好基础
在建造房屋之前,我们需要先确保土地安全,设置支付材料费用的方式,并打开工具箱。在云端,这些概念会转化为项目和结算
什么是 Google Cloud 项目?
您可以将 Google Cloud 视为一个巨大的数字仓库,其中装满了强大的工具和服务。项目是您在数据仓库中拥有的私密安全空间。它是一个容器,用于存放您的所有资源(例如服务器、数据库和代码)、跟踪您的所有费用,以及管理哪些人可以进入并使用其中的工具。我们今天执行的所有操作都将在此项目边界内进行。

虽然我们今天的重点是项目,但了解项目在公司使用的更大结构中的位置很有帮助。Google Cloud 会以清晰的自上而下层次结构来组织所有内容。
Organization (The entire Corporation, e.g., "MegaCorp Inc.")
└── Folders (The Corporate Divisions, e.g., "Research & Development")
├── Project (A specific team's lab, e.g., "Project Phoenix - R&D")
│ └── Resources (The tools in the lab, e.g., a specific server)
└── Project (Another team's workshop, e.g., "Q4 Marketing Campaign")
└── Resources (The tools for that campaign, e.g., a storage bucket)
以下是该层次结构中的各个层级(从上到下):
- 组织节点:
- 这是整个公司的公司总部(例如,
yourcompany.com)。它位于最顶层,用于设置公司范围内的安全和结算政策。对于 Google Cloud 免费试用,您通常在没有组织节点的情况下操作,这对于学习来说完全没问题。
- 这是整个公司的公司总部(例如,
- 文件夹:
- 这些是公司内部的部门或部门(例如,工程、财务)。它们是一个可选层,用于对项目进行分组,并一次性将政策应用于整个团队。在此研讨会中,我们将不使用文件夹。
- 项目(我们的重点):
- 这是特定团队的工作坊或实验。实际工作在此层级进行,这是我们研讨会中最关键的层级。您创建的所有资源必须位于项目中。您还可以在项目级层启用 API(服务)并关联结算账号。
- 资源:
- 这些是车间内的单个工具和机器。我们将部署的 Cloud Run 应用是一种资源。虚拟机、数据库或存储分区都是资源的示例。
实践:创建和配置项目
- 领取赠金
goo.gle/devfest-boston-ai/。并接受《Google Cloud Platform 服务条款》。应用后,您会看到一条消息,表明赠金已应用。
- 前往 。
- 在顶部导航栏中,依次点击选择项目和新建项目。

- 为项目指定一个唯一的名称(例如,
idea-to-launch-yourname),然后点击创建。选择“无组织”。
- 确保已从页面顶部的下拉菜单中选择新项目。
为什么结算如此重要?
结算账号是项目的财务主干;它相当于“登记的信用卡”,用于支付您使用的资源费用。在此研讨会中,您将使用 Google Cloud 免费试用,其中包含免费赠金。这是一个安全的沙盒环境。在赠金用完或试用期结束后,除非您手动升级账号,否则系统不会自动向您收费。了解结算信息是控制费用的第一步。通过设置预算和提醒等最佳实践,您可以在支出接近某个限额时收到电子邮件通知,从而避免任何意外情况。
实践:关联您的结算账号
- 前往。
- 点击关联结算账号。

- 从下拉菜单中选择 Google Cloud Platform 试用结算账号,然后点击“设置账号”。(如果您没有看到下拉菜单,请等待一分钟,待抵扣金额生效后,重新加载页面。)
实践:设置预算提醒(最佳实践)
现在,您的结算已处于有效状态,接下来我们来执行一项关键的费用控制最佳实践:设置预算。达到此金额时,系统不会停止您的服务,而是会向您发送电子邮件提醒,以便您随时了解自己的支出情况。
- 在“结算”页面的左侧菜单中,点击预算和提醒。
- 点击页面顶部的 + 创建预算。

- 为预算命名:为其指定一个简单的名称,例如
Workshop-Alert。 - 范围:保留默认设置,其中应已选择当前项目。点击下一步。

- 金额:在“预算金额”部分中,为“金额类型”选择指定金额。输入一个较低的金额,例如
10。这意味着我们的预算为 10 美元。点击下一步。
- 操作:您可以在此处设置提醒。默认情况下,系统会在支出达到预算金额的 50%、90% 和 100%(即 5 美元、9 美元和 10 美元)时设置提醒。
- 在“电子邮件通知”下,确保已选中向结算管理员和用户发送电子邮件提醒。这样一来,系统就会将通知发送到与您的账号关联的电子邮件地址。
- 点击完成。

您现在已设置主动费用管理工具。在实际项目中,这是确保不会出现意外财务状况的最重要的第一步。
什么是服务?我们为什么要启用服务?
现在,您已在私有实验室内设置了指挥中心,接下来我们来谈谈您可使用的重型设备。Google Cloud 提供 200 多种不同的产品,从数据库到 AI 模型应有尽有。这些资源中的每一种都称为“服务”。您可以将 Cloud Run 视为“自动化运输和物流服务”,将 Gemini 视为“AI 发明和原型设计服务”。如要使用这些强大的服务,您必须先为项目启用其对应的 API(应用编程接口)。

我们继续使用仓库和实验室的比喻。不妨将您的 Google Cloud 项目想象成大型仓库中的专属工作室。该工作室配备了各种先进的工作站:一个用于 AI 分析的工作站、一个用于全球部署的工作站、一个用于数据存储的工作站等。为了安全和高效,这些专用工作站的主电源管道默认处于关闭状态。
启用 API 就像走到实验室中的特定工作站(例如“AI 原型设计工作站”),然后将主电源开关拨到“开启”位置。
但为什么所有功能都默认处于关闭状态?这是经过深思熟虑的设计选择,原因有以下几点:
- 安全性:它可在项目级层强制执行最小权限原则。如果您不使用某项服务,则该服务与您项目的连接处于不活动状态,从而减少潜在的“攻击面”。
- 治理和费用控制:需要采取可审核的有意行动才能开始使用可能产生高费用的服务。这样可以防止意外使用,并帮助组织控制其团队使用的工具。
- 简单性:它可保持项目环境的整洁。您的权限和信息中心不会因您无意使用的服务而显得杂乱无章。
实践:初始化环境
2. 保护应用的安全:谁(或什么)可以控制您的应用?
概念性简介
我们的应用已在互联网上发布,这是一项了不起的成就。但这引发了一个关键问题:这一切是如何发生的?当您部署代码时,系统会在后台进行一系列基于权限的安全“握手”。了解这些概念是实现云安全的关键。
所有这些都由 Identity and Access Management (IAM) 管理。
- IAM 的核心公式:IAM 遵循一个简单但强大的原则:谁可以对哪个资源执行什么操作。
- “谁”(正文)的两种类型 在我们目前的研讨会中,我们已经了解了两种基本类型的身份:
- 用户:指您!与个人相关联的身份,例如您的个人 Gmail 账号。
- 服务账号:这些是应用和服务的特殊非人类身份。您可以将它们视为代码的 ID 徽章。当一个 Google Cloud 服务(例如 Cloud Build)需要与另一个 Google Cloud 服务(例如 Artifact Registry,用于保存容器)互动时,它会使用自己的服务账号来证明自己拥有相应权限。
部署任何应用时,都使用了两种类型的身份:
- 您的用户账号有权启动部署。
- Cloud Build 服务的服务账号有权构建您的代码并保存生成的容器。
管理访问权限
我们来使用 IAM 控制台调查使部署成为可能的权限,然后向另一用户授予特定访问权限。
- 调查:前往 IAM 控制台
- 查找您的身份(用户)
- 在主账号列表中,找到您自己的电子邮件地址。请注意,其角色为“所有者”。Owner 角色授予了对项目中的所有内容进行操作的完整且不受限制的权限。因此,您有权启用 API 并运行
gcloud run deploy命令。
- 在主账号列表中,找到您自己的电子邮件地址。请注意,其角色为“所有者”。Owner 角色授予了对项目中的所有内容进行操作的完整且不受限制的权限。因此,您有权启用 API 并运行
- 查找服务的身份(服务账号)
- 现在,查找名称类似于
[PROJECT_NUMBER]-compute@developer.gserviceaccount.com的主账号。这是 Cloud Build 服务使用的默认服务账号。 - 查看其角色。它将具有 “Cloud Build Service Agent”之类的角色。此角色包含执行其工作所需的特定权限,例如拉取源代码和将容器映像写入注册表。这是为您的部署完成繁重工作的身份。

- 现在,查找名称类似于
- 管理访问权限(实践任务)
- 现在,我们来执行相关的安全任务。假设一位新同事需要能够监控我们刚刚部署的两个应用(
fact-app-manual和fact-app-cli)的性能并查看其日志,但出于安全考虑,他们不应能够部署新版本或删除这两个应用。 - 在 IAM 页面顶部,点击 + 授予访问权限。
- 在新的主账号字段中,输入一个虚构的电子邮件地址,例如
dev-intern@example.com。 - 在选择角色下拉菜单中,使用过滤条件查找并选择 Cloud Run Viewer 角色。此角色是最小权限原则的完美示例。此角色仅授予对 Cloud Run 服务的只读权限,不授予其他任何权限。(或者尝试使用帮我选择角色)
- 点击保存。

- 现在,我们来执行相关的安全任务。假设一位新同事需要能够监控我们刚刚部署的两个应用(
- 查看结果
- 您现在已成功添加新用户,并为其分配了精细的最低权限角色,该角色与您在此研讨会中创建的资源直接相关。他们可以查看您的两个事实应用,但无法更改它们。您已了解用户账号和服务账号如何协同工作,以创建安全且可审核的云环境。
现在,我们来练习向其他应用或服务授予权限,而不是向用户授予权限。假设一个外部自动化工具(由服务账号 vertex-express@... 表示)需要能够使用我们项目中的 AI 服务。我们需要为其授予正确的角色。
- 前往“服务账号”页面:
- 在“IAM”页面中,前往服务账号。
- 找到目标服务账号:
- 在服务账号列表中,找到名为
vertex-express@ecstatic-acumen-{PROJECT_NUMBER}-c9.iam.gserviceaccount.com的服务账号。(您需要将{PROJECT_NUMBER}替换为您的实际项目编号)。这是我们要授予权限的身份。
- 在服务账号列表中,找到名为
- 管理服务账号的权限:
- 在右侧的操作列中,点击三点状图标,您会看到一个下拉菜单。
- 如需管理此服务账号可以执行的操作,请点击管理权限。
- 授予“Vertex AI User”角色:
- 在分配角色下拉菜单中,使用过滤条件查找并选择 Vertex AI User 角色。
- 点击保存。

您现在已成功从服务账号的特定页面导航到正确的项目级权限页面,并授权该服务账号使用项目中的 AI 功能。
3. 使用 AI 助理构建代码
概念性简介
每个应用都从代码开始。从传统上讲,这是最耗时的部分。今天,我们将与 AI 合作伙伴 Gemini 合作,加快这一流程。不过,在编写第一个命令之前,我们有必要先了解 Google Cloud 提供的 AI 工具。
Google 的 AI 产品可分为三大类,从最简单到最强大:
您可以通过两个主要界面与“创意引擎”(Gemini) 进行互动,每个界面都有不同的用途。
- Google AI Studio (
aistudio.google.com)- 用途:一款免费的基于 Web 的工具,用于快速制作原型和使用 Gemini 进行实验。这是开始撰写提示并了解模型功能的快捷方式。
- 运作方式:您只需使用 Google 账号即可开始使用该功能。如需在应用中使用该服务,您需要生成 API 密钥。若要在本讲座中使用该 API,您需要在项目中启用“Generative Language API”服务。
- 类比:AI Studio 就像公共图书馆或开放式工作室。您可以轻松进入并免费试用这些工具。
- Vertex AI
- 功能:这是 Google Cloud 的端到端平台,可用于管理整个机器学习生命周期。这是一个完整的专业工作台,您可以在其中使用 Gemini 等基础模型,还可以从头开始构建、训练和部署自己的自定义机器学习模型。它专为企业级安全性、可伸缩性和治理而打造。它还提供企业级版本的相同工具,这些工具完全集成在您的 Google Cloud 项目中。
- 工作原理:它使用相同的强大模型,但会沿用项目的所有安全性、访问权限控制 (IAM) 和数据治理功能。这是我们在第 1 部分中通过启用
aiplatform.googleapis.comAPI 启用的服务。 - 类比:Vertex AI 是您的私密、安全的企业研发实验室。您所做的一切都会被记录、保护并与您的其他项目资源相关联。
实践:在 Vertex AI Studio 中生成应用代码
接下来,我们来看看使用 Vertex AI 中的可视化工具构建应用时会发生什么情况。
- 前往 Vertex AI Studio:
- 生成网站:
- 在提示框中,输入我们稍后将使用的完全相同的请求:
Create the code for a simple web application that shows Halloween fun facts. The application should be built using the Python functions_framework for Cloud Run. The entry point function must be named 'hello_http'. When a user visits the main page, the server should randomly display one fact from a list. The page should have a separate 'index.html' file for the structure and a 'style.css' file to give it a spooky theme
- 按 Enter 键。模型将生成代码,可能分为三个不同的代码块:一个用于 Python (
main.py)、一个用于 HTML (index.html),另一个用于 CSS (style.css)。
请勿关闭此浏览器标签页!在下一部分中,您需要复制这三个代码块中的代码。请注意,AI 已正确分离文件。这是一种不错的做法,但正如我们将看到的,它需要执行多个手动步骤才能部署。
4. 使用 Cloud Run 将应用部署到全球
概念性简介
我们的代码已生成,但它只是浏览器中的文本。为了服务客户,它需要在服务器上运行。Cloud Run 是一个“无服务器”平台,这意味着我们提供代码,而 Google 会处理所有其他事务:服务器、扩缩和安全性。其最强大的功能是缩减至零:如果没有人访问您的应用,您无需为闲置时间付费。
- 什么是“无服务器”?过去,部署应用意味着租用服务器(虚拟机)、安装操作系统、配置网络和安全性,并不断维护。无服务器是一种现代云方法,开发者只需专注于代码。您只需将代码交给 Cloud Run 等服务,其他一切事宜都由该服务负责处理:服务器、扩缩、安全性和网络。
- Cloud Run 的运作方式:扩缩的奥秘。当您部署到 Cloud Run 时,它会将您的代码打包到容器中(一种标准化、可移植的软件包,其中包含您的应用及其所有依赖项)。当用户访问应用的网址时,Cloud Run 会立即启动容器来处理请求。如果有一千个用户同时访问,它会自动启动一千个副本。最强大的功能是缩放到零。当无人访问您的应用时,Cloud Run 会将运行的容器数量缩减至零。这意味着您无需为闲置时间支付任何费用,因此非常经济实惠。
对于首次部署,我们将使用 Cloud Run 控制台的内嵌编辑器,手动将代码复制到相应位置。
实践:部署应用
- 启动 Cloud Run 创建向导:
- 配置服务:
- 选择使用内嵌编辑器创建函数。
- 为您的服务命名:
fact-app-manual。 - 选择运行时
Python 3.13。 - 选择地区
us-central1。 - 选择允许公开访问。
- 请将其他所有设置保留为默认值。
- 点击底部的创建按钮。

- 输入代码:
- 您将看到一个编辑器,其中包含默认的
main.py和requirements.txt文件。 - main.py::前往 Vertex AI Studio 标签页。复制整个 Python 代码块。返回到 Cloud Run 编辑器,然后将默认的
main.py内容替换为您刚刚复制的代码。 - requirements.txt::* 点击编辑器中的
requirements.txt文件。Python 代码需要functions-framework。将文件内容替换为:functions-framework - index.html::在编辑器的文件浏览器中,点击“+”以添加新文件。将文件命名为
index.html。前往 Vertex AI Studio 标签页,复制 HTML 代码块,然后将其粘贴到这个新的index.html文件中。 - style.css::点击“+”添加新文件。将其命名为
style.css。前往 Vertex AI Studio 标签页,复制 CSS 代码块,然后将其粘贴到这个新的style.css文件中。
- 您将看到一个编辑器,其中包含默认的
- 部署服务:
- 在三个文件都正确放置到位后,点击保存并部署按钮。
- 访问您的实时应用:
- 部署需要几分钟时间。完成后,服务详情页面随即会显示在顶部,其中包含一个公开 网址。
- 点击此网址。您的应用现已上线!虽然可行,但需要手动复制粘贴很多内容。

5. 优化开发者的工作流程
控制台非常适合学习,但对于迭代开发来说速度较慢。现在,我们将了解开发者首选的工作流程,即使用 Cloud Shell 和 Gemini CLI 将整个多步骤流程转变为简化的对话。
什么是 Cloud Shell 和 Gemini CLI?
Cloud Shell 是浏览器中的完整 Linux 计算机,预加载了 gcloud CLI(Google Cloud 的遥控器)等开发者工具。
Gemini CLI 是一款交互式 AI 赋能的编码助理,可在终端中运行。
什么是 Gemini 扩展服务?
不妨将 Gemini CLI 视为一部功能强大的智能手机。就其本身而言,它非常强大。扩展程序类似于您从应用商店安装的应用。它们为 Gemini CLI 提供了默认情况下不具备的全新专业能力。例如,nanobanana 扩展程序是一款“应用”,可将 Gemini CLI 连接到 Google 强大的图片生成模型,从而让我们直接通过命令行生成图片。
实践:简化的工作流程
- 生成 API 密钥
- 激活并配置 Cloud Shell:
- 在 Google Cloud 控制台顶部,点击激活 Cloud Shell 图标 (
>_)。
- 在终端中运行以下命令来设置环境,请务必将 Project ID 替换为您自己的项目 ID
设置 NANOBANANA_GOOGLE_API_KEY。将其替换为您的 API 密钥。(说# Set your Project ID export PROJECT_ID="[your-project-id-goes-here]"Y继续安装。) 在终端中,运行以下命令以安装扩展程序:gcloud config set project $PROJECT_ID # REPLACE with your API Key. export NANOBANANA_GOOGLE_API_KEY="[your-api-key-goes-here]"# Configure the CLI to use your project with Vertex AI export GOOGLE_CLOUD_PROJECT=$PROJECT_ID export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=true # Install the image generation extension gemini extensions install https://github.com/gemini-cli-extensions/nanobanana
- 在 Google Cloud 控制台顶部,点击激活 Cloud Shell 图标 (
- 我们将使用 Gemini CLI,这是一款功能强大的命令行界面,可充当 AI 编码助理。它允许我们用简单的英语描述所需代码,然后它会为我们生成结构,从而显著加快开发速度。
- 开始互动式 AI 会话:
- 让我们为项目创建一个新目录,并以互动模式启动 Gemini CLI。在终端中运行以下命令。
mkdir ~/2025-website cd ~/2025-website cat <<EOF > .env GOOGLE_CLOUD_PROJECT=$PROJECT_ID GOOGLE_CLOUD_LOCATION=$GOOGLE_CLOUD_LOCATION GOOGLE_GENAI_USE_VERTEXAI=true NANOBANANA_GOOGLE_API_KEY=$NANOBANANA_GOOGLE_API_KEY EOF clear gemini --yolo
- 让我们为项目创建一个新目录,并以互动模式启动 Gemini CLI。在终端中运行以下命令。
- 生成应用并进行迭代:
- 您现在正与 AI 助理进行对话。粘贴以下提示,以通过一个命令生成整个网站:
Write a simple web app that shows Halloween fun facts using the Python Flask. When a user visits the main page, it should show one random fact. Include a button that fetches and displays a new fact when clicked. Create a simple, clean index.html, a separate style.css with a spooky theme, and a requirements.txt file. After creating the files, attempt to start the web app locally on port 8080. - 在本地测试:AI 将创建文件并启动 Web 服务器。(有时加载不会停止,如果您看到它正在尝试启动服务器,请随意前往下一步。)
- 点击 Cloud Shell 工具栏中的网页预览图标,选择在端口 8080 上预览,您的网站将显示在新标签页中。

- 在 Gemini CLI 中,按
Esc可取消请求,或提示 Gemini CLIStop the web server。
- 您现在正与 AI 助理进行对话。粘贴以下提示,以通过一个命令生成整个网站:
- 使用 AI 生成的图片更新网站:
- 现在,我们来使用扩展程序。以
/开头的命令是针对工具的“斜杠命令”,而不是针对 AI 的提示。/generate 3 images of spooky halloween fun - 该扩展程序将创建三张图片。现在,我们让 AI 修改网站以使用这些变量。
Update the website so it will display and rotate between the 3 newly generated images each time the button is clicked. And do NOT start the server.
- 现在,我们来使用扩展程序。以
- 准备部署:
- Cloud Run 使用容器部署代码。
Dockerfile是用于构建容器的配方。我们来让 AI 为我们创建一个。Create a Dockerfile suitable for deploying this Python Flask app to Cloud Run.
- Cloud Run 使用容器部署代码。
- 使用单条命令进行部署:
- 按两次
CtrlC即可退出 Gemini CLI。或者在提示中输入/quit - 现在,使用
gcloudCLI 从当前目录部署整个应用。gcloud run deploy fact-app-cli \ --source . \ --region us-central1 \ --allow-unauthenticated
- 按两次
- 查看差异:
- 几分钟后,您将获得一个新网址,其中包含由 AI 生成的完整网站。访问 Cloud Run 控制台,您会看到这两项服务:
fact-app-manual和fact-app-cli。您刚刚体验了命令行开发者工作流程的速度和强大功能。
- 几分钟后,您将获得一个新网址,其中包含由 AI 生成的完整网站。访问 Cloud Run 控制台,您会看到这两项服务:
恭喜
您已成功完成 Google Cloud 上的整个开发生命周期。您从一个空项目开始,现在已完成以下操作:
- 配置了具有结算功能的安全项目。
- 使用 AI 助理撰写完整的申请。
- 将该应用部署到可扩缩的无服务器平台。
- 了解了如何使用 IAM 管理其安全性。
现在,您已掌握在 Google Cloud 上构建更复杂、更强大的应用所需的基础技能。

