arrow_back

在 Google Cloud 儲存、處理及管理資料:挑戰實驗室

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

在 Google Cloud 儲存、處理及管理資料:挑戰實驗室

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

ARC100

Google Cloud 自學實驗室標誌

總覽

在挑戰研究室中,您會在特定情境下完成一系列任務。挑戰研究室不會提供逐步說明,您將運用從課程研究室學到的技巧,自行找出方法完成任務!自動評分系統 (如本頁所示) 將根據您是否正確完成任務來提供意見回饋。

在您完成任務的期間,挑戰研究室不會介紹新的 Google Cloud 概念。您須靈活運用所學技巧,例如變更預設值或詳讀並研究錯誤訊息,解決遇到的問題。

若想滿分達標,就必須在時限內成功完成所有任務!

設定

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

挑戰情境

您剛獲聘,現在是初階資料工程師。目前已協助多個團隊建立及管理 Google Cloud 資源。

公司認為您具備執行這些工作所需的技能與知識。

您的挑戰

現在,您必須協助新成立的開發團隊完成新專案的幾項初期工作;新專案名為「回憶」,目的是儲存及整理相片。您必須協助「回憶」團隊進行應用程式開發環境的初始設定,並收到下列工作與相應要求:

  • 建立用來儲存相片的 bucket
  • 建立 Pub/Sub 主題,稍後您建立的 Cloud Run 函式會用到
  • 建立 Cloud Run 函式

您須遵守以下規則:

  • 如未特別指定,所有資源均須建立於 區域。
  • 使用專案虛擬私有雲。
  • 名稱通常為「team-resource」,例如執行個體的名稱可以是「kraken-webserver1」。
  • 分配符合成本效益的資源大小。專案會受到監控,超量使用資源會導致做為容器的專案終止,您的專案也有可能受到影響,因此請特別留意。以上是監控團隊提供的指引。除非另有指定,否則請針對小型 Linux VM 使用 f1-micro,並為 Windows 或其他應用程式 (例如 Kubernetes 節點) 使用 n1-standard-1

以下詳細說明各項工作,祝您好運!

工作 1:建立 bucket

建立 bucket 並命名為 ,用於儲存相片。 資源務必建立於 區域。

點選「Check my progress」,確認目標已達成。 建立 bucket 並命名為

工作 2:建立 Pub/Sub 主題

建立 Pub/Sub 主題並命名為 ,以便 Cloud Run 函式傳送訊息。

點選「Check my progress」,確認目標已達成。 建立名為 的 Pub/Sub 主題

工作 3:建立縮圖的 Cloud Run 函式

建立 Cloud Run 函式 ,利用先前新增至 bucket 的圖片來建立縮圖。

確認 Cloud Run 函式採用的是 Cloud Run functions 環境 (第 2 代)。 資源務必建立於 區域和 可用區。

  1. 使用 Node.js 22 建立名為 的 Cloud Run 函式 (第 2 代),並將觸發條件設為 Cloud Storage
注意: 每次在工作 1 建立的 bucket 中建立物件時,都必須執行這個 Cloud Run 函式。 過程中,Cloud Run 函式可能會要求取得啟用 API 的權限,或要求將角色授予服務帳戶。請按照要求啟用各個必要 API 及授予角色。

授予權限後,請稍候幾分鐘,再點按建立函式,確保權限已更新。
使用控制台建立函式時請注意:啟動函式建立作業後,請等待「建立 Eventarc 觸發條件」 (位於頁面頂端的「建立服務」下方) 顯示綠色核取方塊,再於下一步更新程式碼。 如果未等待 Creating Eventarc trigger 顯示綠色核取方塊,觸發條件可能無法順利建立,且不會顯示在函式的「觸發條件」分頁中。
  1. 請務必將「進入點」 (要執行的函式) 設為

  2. 將下列程式碼加入 index.js

const functions = require('@google-cloud/functions-framework'); const { Storage } = require('@google-cloud/storage'); const { PubSub } = require('@google-cloud/pubsub'); const sharp = require('sharp'); functions.cloudEvent('{{{ project_0.startup_script.function }}}', async cloudEvent => { const event = cloudEvent.data; console.log(`Event: ${JSON.stringify(event)}`); console.log(`Hello ${event.bucket}`); const fileName = event.name; const bucketName = event.bucket; const size = "64x64"; const bucket = new Storage().bucket(bucketName); const topicName = "{{{ project_0.startup_script.topic }}}"; const pubsub = new PubSub(); if (fileName.search("64x64_thumbnail") === -1) { // doesn't have a thumbnail, get the filename extension const filename_split = fileName.split('.'); const filename_ext = filename_split[filename_split.length - 1].toLowerCase(); const filename_without_ext = fileName.substring(0, fileName.length - filename_ext.length - 1); // fix sub string to remove the dot if (filename_ext === 'png' || filename_ext === 'jpg' || filename_ext === 'jpeg') { // only support png and jpg at this point console.log(`Processing Original: gs://${bucketName}/${fileName}`); const gcsObject = bucket.file(fileName); const newFilename = `${filename_without_ext}_64x64_thumbnail.${filename_ext}`; const gcsNewObject = bucket.file(newFilename); try { const [buffer] = await gcsObject.download(); const resizedBuffer = await sharp(buffer) .resize(64, 64, { fit: 'inside', withoutEnlargement: true, }) .toFormat(filename_ext) .toBuffer(); await gcsNewObject.save(resizedBuffer, { metadata: { contentType: `image/${filename_ext}`, }, }); console.log(`Success: ${fileName} → ${newFilename}`); await pubsub .topic(topicName) .publishMessage({ data: Buffer.from(newFilename) }); console.log(`Message published to ${topicName}`); } catch (err) { console.error(`Error: ${err}`); } } else { console.log(`gs://${bucketName}/${fileName} is not an image I can handle`); } } else { console.log(`gs://${bucketName}/${fileName} already has a thumbnail`); } });
  1. 將下列程式碼加入 package.json
{ "name": "thumbnails", "version": "1.0.0", "description": "Create Thumbnail of uploaded image", "scripts": { "start": "node index.js" }, "dependencies": { "@google-cloud/functions-framework": "^3.0.0", "@google-cloud/pubsub": "^2.0.0", "@google-cloud/storage": "^6.11.0", "sharp": "^0.32.1" }, "devDependencies": {}, "engines": { "node": ">=4.3.2" } } 注意:如果收到權限遭拒的錯誤訊息,指出可能需要幾分鐘,才能將所有必要權限套用至服務代理,請稍候片刻再試一次,並確認所有適當角色 (Eventarc 服務代理、Eventarc 事件接收者、服務帳戶憑證建立者、Pub/Sub 發布者) 均已指派至正確的服務帳戶。

工作 4:測試基礎架構

如要測試這項功能,請將 JPG 或 PNG 圖片上傳至 bucket。

  1. 將一張 PNG 或 JPG 圖片上傳至 bucket。
注意: 您需要將一張 JPG 或 PNG 圖片上傳至 bucket,才能確認縮圖已建立 (成功建立函式後)。您可以使用任何 JPG 或 PNG 圖片,或是使用這張圖片:https://storage.googleapis.com/cloud-training/arc101/travel.jpg。請將圖片下載至您的機器,然後將檔案上傳至您的 bucket。
  1. 請稍後片刻,接著點選「bucket 詳細資料」頁面中的「重新整理」按鈕,,您應該就會看見縮圖圖片。

上傳圖片檔後,就能點選下方來確認進度,不需等到縮圖建立完成。

注意:如果已順利部署函式,但 bucket 中仍未出現縮圖圖片,可以檢查「觸發條件」分頁,確認是否顯示您先前提供的函式觸發條件資訊。如果先前曾出現錯誤,可能沒有正確儲存。

如果函式的「觸發條件」分頁沒有出現 Cloud Storage 觸發條件,您可以參閱「建立服務的觸發條件」說明文件頁面,重新建立觸發條件,再重新上傳新檔案來測試。新增檔案後,別忘了重新整理頁面。

點選「Check my progress」,確認目標已達成。 確認 Cloud Run 函式是否成功建立縮圖

恭喜!

恭喜!在本實驗室中,您已成功建立 bucket、Pub/Sub 主題和 Cloud Run 函式,並使用新增至 bucket 的圖片建立縮圖。

「在 Google Cloud 儲存、處理及管理資料」徽章

取得下一枚技能徽章

這個自學實驗室是「在 Google Cloud 儲存、處理與管理資料 - 控制台」課程的一部分。完成這門課程後,您可獲得上述徽章以表彰成就。您可以在履歷表和社群平台張貼徽章,並加上 #GoogleCloudBadge 公開這項成就。

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2025 年 4 月 4 日

實驗室上次測試日期:2025 年 4 月 4 日

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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