arrow_back

利用 Google Cloud Storage 优化成本

登录 加入
访问 700 多个实验和课程

利用 Google Cloud Storage 优化成本

实验 1 小时 universal_currency_alt 5 个积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP649

Google Cloud 自学实验的徽标

概览

在本实验中,您将使用 Cloud Run functionsCloud Scheduler 来识别和清理浪费的云资源。您会触发一个 Cloud Run 函数,以将存储桶从 Cloud Monitoring 提醒政策迁移到更加经济实惠的存储类别中。

Google Cloud 会提供存储对象生命周期规则,可根据对象的某组属性(例如创建日期或有效状态)将其自动移动到不同的存储类别中。不过,这些规则无法基于对象的访问情况进行移动。有时,如果有较新的对象在一定时间段内未被访问过,则您可能需要将其移动到 Nearline Storage。

目标

在本实验中,您将学习如何完成以下操作:

  • 创建两个存储桶,将文件添加到 serving-bucket 中,并针对其生成数据流量。
  • 创建 Cloud Monitoring 信息中心,以直观呈现存储桶利用率。
  • 部署一个 Cloud Run 函数,以将空闲存储桶迁移到更加经济实惠的存储类别中,并使用旨在模拟来自 Cloud 提醒政策的通知的载荷来触发该函数。

设置和要求

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

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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 概览指南

架构

在下图中,您会触发一个 Cloud Run 函数,以将存储桶从 Cloud Monitoring 提醒政策迁移到更加经济实惠的存储类别中。

迁移存储桶图表

任务 1. 启用 API 并下载源代码

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

  2. 在 Cloud Shell 中,启用 Cloud Scheduler API:

gcloud services enable cloudscheduler.googleapis.com

点击检查我的进度以验证是否完成了以下目标:

启用 Cloud Scheduler API
  1. 下载本实验的源代码:
gcloud storage cp -r gs://spls/gsp649/* . && cd gcf-automated-resource-cleanup/
  1. 设置环境变量,并将代码库文件夹设为 $WORKDIR,在其中运行本实验相关的所有命令:
export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null) WORKDIR=$(pwd)
  1. 安装开源负载生成工具 Apache Bench
sudo apt-get update sudo apt-get install apache2-utils -y

任务 2. 创建 Cloud Storage 存储桶并添加文件

  1. 在 Cloud Shell 中,导航到 migrate-storage 目录:
cd $WORKDIR/migrate-storage
  1. 创建 Cloud Storage 存储桶 serving-bucket。您稍后会使用此存储桶来更改存储类别:
export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null) gcloud storage buckets create gs://${PROJECT_ID}-serving-bucket -l {{{project_0.default_region|REGION}}}

点击检查我的进度以验证是否完成了以下目标:

创建 Cloud Storage 存储桶
  1. 公开该存储桶:
gsutil acl ch -u allUsers:R gs://${PROJECT_ID}-serving-bucket
  1. 将文本文件添加到存储桶:
gcloud storage cp $WORKDIR/migrate-storage/testfile.txt gs://${PROJECT_ID}-serving-bucket
  1. 公开文件:
gsutil acl ch -u allUsers:R gs://${PROJECT_ID}-serving-bucket/testfile.txt
  1. 确认您可以访问该文件:
curl http://storage.googleapis.com/${PROJECT_ID}-serving-bucket/testfile.txt

输出将如下所示:

this is a test

点击检查我的进度以验证是否完成了以下目标:

公开 Cloud Storage 存储桶
  1. 创建第二个存储桶并将其命名为 idle-bucket,该存储桶不提供任何数据:
gcloud storage buckets create gs://${PROJECT_ID}-idle-bucket -l {{{project_0.default_region|REGION}}} export IDLE_BUCKET_NAME=$PROJECT_ID-idle-bucket

点击检查我的进度以验证是否完成了以下目标:

创建另一个 Cloud Storage 存储桶

任务 3. 创建 Monitoring 信息中心

创建 Monitoring 指标范围

设置与您的 Google Cloud 项目关联的 Monitoring 指标范围。您可以按以下步骤创建一个新账号来免费试用 Monitoring。

  • 在 Cloud 控制台中,依次点击导航菜单 (“导航菜单”图标) > 查看所有产品 > 可观测性 > Monitoring

如果 Monitoring 概览页面打开,则表明您的指标范围项目已创建完毕。

  1. 在左侧面板中,依次点击信息中心 > 创建自定义信息中心

  2. 将该信息中心命名为 Bucket Usage

  3. 点击 + 添加 widget

  4. 点击折线图

  5. Widget 名称部分,输入 Bucket Access

  6. 选择一个指标部分,依次点击 GCS 存储桶 > API > 请求数指标,然后点击应用

注意:如果您找不到请求数指标,请取消选中有效

选择指标信息中心

  1. 如需按存储桶名称对指标进行分组,请在分组依据下拉列表中选择 bucket_name,然后点击确定

  2. 点击 + 添加过滤条件

如需按方法名称过滤,请执行以下操作:

  • 按指标标签过滤部分,选择方法
  • 方法旁边的下拉菜单中,选择 ReadObject
  • 点击应用

您已配置 Cloud Monitoring 以观察存储桶中的对象访问情况。该图表不显示任何数据,因为没有发送到 Cloud Storage 存储桶的数据流量。

任务 4. 为服务存储桶生成负载

配置好 Monitoring 后,请使用 Apache Bench 将数据流量发送到 serving-bucket 中。

  1. 在 Cloud Shell 中,将请求发送到服务存储桶中的对象:
ab -n 10000 http://storage.googleapis.com/$PROJECT_ID-serving-bucket/testfile.txt
  1. 在左侧面板中,点击信息中心,然后点击名为 Bucket Usage 的信息中心的名称,即可查看“Bucket Access”图表。
注意:如果您之前关闭了此标签页,请依次选择导航菜单 > 查看所有产品 > 可观测性 > 监控,然后在左侧面板中,依次点击信息中心 > Bucket Usage 注意:您需要等待至少 1 分钟,Bucket Usage 信息中心才会显示此图表。
  1. 查看数据流量详情。

Bucket Usage 信息中心

您可能需要输入 CTRL-C 才能返回到命令提示符位置。

任务 5. 查看并部署 Cloud Run 函数

  1. 在 Cloud Shell 中,输入以下命令以查看将存储桶迁移到 Nearline Storage 类别中的 Cloud Run 函数代码:
cat $WORKDIR/migrate-storage/main.py | grep "migrate_storage(" -A 15

输出为:

def migrate_storage(request): request_json = request.get_json(force=True) bucket_name = request_json['incident']['resource_name'] print(f"bucket_name: {bucket_name}") # Print the bucket name if not bucket_name: print("Error: bucket_name is empty") return "Invalid bucket name", 400 storage_client = storage.Client(project) bucket = storage_client.get_bucket(bucket_name) bucket.storage_class = "NEARLINE" bucket.patch() return "Bucket migrated successfully", 200

请注意,Cloud Run 函数会使用请求中传入的存储桶名称,将其存储类别更改为 Nearline。

  1. 更新 Python 脚本以使用您的项目 ID:
sed -i "s/<project-id>/$PROJECT_ID/" $WORKDIR/migrate-storage/main.py
  1. 停用 Cloud Run functions API:
gcloud services disable cloudfunctions.googleapis.com
  1. 重新启用 Cloud Run functions API:
gcloud services enable cloudfunctions.googleapis.com
  1. 导出项目编号:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
  1. 为您的开发者服务账号添加 artifactregistry.reader 权限:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
  1. 部署 Cloud Run 函数:
gcloud functions deploy migrate_storage --gen2 --trigger-http --runtime=python39 --region {{{project_0.default_region | Region}}}

系统出现提示时,请输入 Y 以启用项目对应的 API [run.googleapis.com],然后重试。如要允许未经过身份验证的调用,请执行相同操作。

注意:如果出现权限错误,请等待几分钟,然后再次尝试部署。
  1. 请将触发器网址保存到一个环境变量中,以便在下一部分中使用:
export FUNCTION_URL=$(gcloud functions describe migrate_storage --format=json --region {{{project_0.default_region | Region}}} | jq -r '.url')

点击检查我的进度以验证是否完成了以下目标:

部署 Cloud Run 函数

任务 6. 测试并验证提醒自动化

  1. 更新 JSON 文件中的存储桶名称
export IDLE_BUCKET_NAME=$PROJECT_ID-idle-bucket sed -i "s/\\\$IDLE_BUCKET_NAME/$IDLE_BUCKET_NAME/" $WORKDIR/migrate-storage/incident.json
  1. 使用 incident.json 文件将测试通知发送到您部署的 Cloud Run 函数中:
envsubst < $WORKDIR/migrate-storage/incident.json | curl -X POST -H "Content-Type: application/json" $FUNCTION_URL -d @-

输出为:

Bucket migrated successfully

输出内容不以换行符终止,因此命令提示符会紧随其后。

  1. 确认空闲存储桶已迁移到 Nearline:
gsutil defstorageclass get gs://$PROJECT_ID-idle-bucket

输出为:

gs://<project-id>-idle-bucket: NEARLINE

点击检查我的进度以验证是否完成了以下目标:

确认存储桶已迁移到 Nearline

恭喜!

恭喜!在本实验中,您成功创建了两个 Cloud Storage 存储桶,向其中一个存储桶添加了一个对象,配置了 Cloud Monitoring 以跟踪存储桶访问权限,查看并部署了一个 Cloud Run 函数以将对象迁移到 Nearline 存储桶中,并使用 Cloud Monitoring 提醒对其进行了测试。

Google Cloud 培训和认证

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

本手册的最后更新时间:2025 年 3 月 4 日

本实验的最后测试时间:2025 年 3 月 4 日

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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