arrow_back

Cloud Storage (AWS)

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

Cloud Storage (AWS)

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

身為雲端架構師,您一定知道對任何組織而言,儲存空間都是最重要的資源之一。員工、同事處理日常工作時,會產生、修改和存取數千個檔案和文件。因此,您必須擬定出色的災難復原計畫,確實儲存備份並建立備援架構,包括下列項目:

  • 兼具安全性、擴充性和高可用性的物件層級儲存空間
  • 精細的存取控管機制
  • 版本管理
  • 生命週期管理功能
  • on-prem 和雲端目錄之間的直接同步處理程序

在 Amazon Web Services (AWS),您的物件儲存空間解決方案是 Simple Storage Service (S3)。

如要進行精細的存取控管,您需搭配使用儲存貯體政策、Identity and Access Management (IAM) 政策和存取控制清單 (ACL),管理可以存取整個儲存貯體和個別物件的人員。您也能使用 AWS 代管或用戶端管理的加密金鑰,加密 S3 儲存貯體內的物件,獲得額外保護。

設定版本管制可避免重要檔案遭意外刪除或覆寫。您可以設定生命週期政策,根據存取模式自動調整物件的儲存類別,以便提高成本效益。如要同步處理目錄,您可以對位置進行雙向同步,確保來源的變更會反映到目的地,這樣就能複製資料。

AWS 圖表

接下來,您將探索各種 Cloud Storage 功能,瞭解如何使用 Cloud 控制台和 gsutil 工具,將資料安全存放在 Google Cloud。

總覽

Cloud Storage 是 Google Cloud 中的基本資源,也提供許多進階功能。在本實驗室中,您將運用許多在設計方面相當實用的 Cloud Storage 功能,並使用控制台和 gsutil 工具來探索 Cloud Storage。

目標

在本實驗室中,您將瞭解如何執行下列工作:

  • 建立和使用 bucket
  • 設定存取控管清單 (ACL) 來限制存取
  • 使用自己的加密金鑰
  • 導入版本管控
  • 使用目錄同步處理

設定 Qwiklabs

每個實驗室都會提供新的 Google Cloud 專案和一組資源,讓您在時限內免費使用。

  1. 按一下「Start Lab」按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源並開啟另一個分頁,當中顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要查看列出 Google Cloud 產品和服務的選單,請點選左上角的「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。 「導覽選單」圖示

工作 1:準備作業

在這項工作,您會先建立 Cloud Storage bucket,然後下載範例檔案,下一項工作會用到這個檔案。

建立 Cloud Storage bucket

  1. 前往 Google Cloud 控制台的「導覽選單」「導覽選單」圖示,依序點選「Cloud Storage」>「bucket」
注意:請務必為 bucket 設定全域不重複的名稱。您可以將 PROJECT_ID_1 的部分資訊納入名稱中,確保名稱不會重複。舉例來說,如果 PROJECT_ID_1myproj-154920,值區名稱可以設定為 storecore154920
  1. 點選「建立」
  2. 指定下列屬性,其餘設定保持預設狀態:
屬性 值 (按照指示輸入值或選取選項)
名稱 輸入全域不重複的名稱
位置類型 區域
區域
強制禁止公開存取這個值區 取消勾選
存取控管 精細 (除了 bucket 層級權限,也會控管物件層級權限)
  1. 請記下 bucket 名稱,實驗室的後續步驟會用到這個名稱,以下稱 [BUCKET_NAME_1]。
  2. 點選「建立」

點選「Check my progress」,確認目標已達成。 建立 Cloud Storage bucket

使用 CURL 下載範例檔案並複製兩份

  1. 在 Cloud 控制台中,按一下「啟用 Cloud Shell」圖示 Cloud Shell
  2. 如果出現提示訊息,請點選「繼續」
  3. 將 [BUCKET_NAME_1] 保存在環境變數中:
export BUCKET_NAME_1=<enter bucket name 1 here>
  1. 使用 echo 進行驗證:
echo $BUCKET_NAME_1
  1. 執行下列指令來下載範例檔案 (這個範例檔案是公開的 Hadoop 說明文件 HTML 檔案):
curl \ https://hadoop.apache.org/docs/current/\ hadoop-project-dist/hadoop-common/\ ClusterSetup.html > setup.html
  1. 如要複製檔案,請執行下列指令:
cp setup.html setup2.html cp setup.html setup3.html

工作 2:存取控管清單 (ACL)

在這項工作中,您會設定 ACL,對複製到 Cloud Storage bucket 的檔案限制存取權。

將檔案複製到 bucket 並設定 ACL

  1. 執行下列指令,將第一個檔案複製到 bucket:
gcloud storage cp setup.html gs://$BUCKET_NAME_1/
  1. 如要取得指派給 setup.html 的預設存取清單,請執行下列指令:
gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl.txt cat acl.txt
  1. 如要將存取清單設為私人並確認結果,請執行下列指令:
gsutil acl set private gs://$BUCKET_NAME_1/setup.html gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl2.txt cat acl2.txt
  1. 如要更新存取清單,將檔案設為可公開讀取,請執行下列指令:
gsutil acl ch -u AllUsers:R gs://$BUCKET_NAME_1/setup.html gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl3.txt cat acl3.txt

點選「Check my progress」,確認目標已達成。 將檔案設定為可公開讀取

在 Cloud 控制台檢視檔案

  1. 前往 Google Cloud 控制台的「導覽選單」「導覽選單」圖示,依序點選「Cloud Storage」>「bucket」
  2. 點選「[BUCKET_NAME_1]」。
  3. 針對 setup.html 檔案,確認「公開存取權」具有可使用的「公開連結」

刪除本機檔案並從 Cloud Storage 複製還原

  1. 返回「Cloud Shell」。如有需要,請按一下「啟用 Cloud Shell」圖示 Cloud Shell
  2. 執行下列指令來刪除設定檔案:
rm setup.html
  1. 如要確認檔案已刪除,請執行下列指令:
ls
  1. 如要從 bucket 再次複製檔案,請執行下列指令:
gcloud storage cp gs://$BUCKET_NAME_1/setup.html setup.html

工作 3:客戶提供的加密金鑰 (CSEK)

在這項工作,您會產生一組 CSEK 金鑰,對儲存在 Cloud Storage bucket 的檔案進行加密。

產生 CSEK 金鑰

在接下來的步驟,您需要使用 AES-256 base-64 金鑰。

  1. 執行下列指令來建立金鑰:
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'

結果 (這是輸出內容範例)

b'tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=\n'
  1. 從指令輸出中複製產生的金鑰值,並排除 b'\n'。金鑰格式應該是 tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=

修改 boto 檔案

加密控制項包含在 gsutil 設定檔中,檔案格式為 .boto

  1. 如要檢視並開啟 boto 檔案,請執行下列指令:
ls -al nano .boto

注意:如果 .boto 檔案是空的,請按下 Ctrl+X 鍵關閉 nano 編輯器,然後使用 gsutil config -n 指令來產生新的 .boto 檔案。接著,請使用上述指令,再次嘗試開啟檔案。

如果 .boto 檔案依然是空的,可以使用 gsutil version -l 指令找出檔案位置。
  1. 使用「#encryption_key=」指令找出該行程式碼
注意:nano 編輯器底部提供快速指令,方便您迅速找到檔案內容。使用 Where Is 快速指令,即可迅速找到 #encryption_key= 行程式碼。
  1. 移除 # 字元即可取消註解該行程式碼,然後將先前產生的金鑰貼到末端。

範例 (以下為範例)

變更前: # encryption_key= 變更後: encryption_key=tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
  1. 依序按下 Ctrl+OEnter 鍵儲存 boto 檔案,然後按下 Ctrl+X 退出 nano 編輯器。

上傳其餘設定檔案 (已加密) 並在 Cloud 控制台驗證

  1. 如要上傳其餘 setup.html 檔案,請執行下列指令:
gsutil cp setup2.html gs://$BUCKET_NAME_1/ gsutil cp setup3.html gs://$BUCKET_NAME_1/
  1. 返回 Cloud 控制台。
  2. 按一下 [BUCKET_NAME_1]。setup2.html 和 setup3.html 檔案都會顯示已由客戶加密。

點選「Check my progress」,確認目標已達成。 客戶提供的加密金鑰 (CSEK)

刪除本機檔案、複製新檔案和驗證加密作業

  1. 如要刪除本機檔案,請在 Cloud Shell 執行下列指令:
rm setup*
  1. 如要從 bucket 再次複製檔案,請執行下列指令:
gsutil cp gs://$BUCKET_NAME_1/setup* ./
  1. 如要串連加密檔案來查看是否已複製成功,請執行下列指令:
cat setup.html cat setup2.html cat setup3.html

工作 4:輪替 CSEK 金鑰

在這項工作,您會將用來加密 Cloud Storage 資料的 CSEK 進行輪替,持續確保資料安全。

將目前的 CSEK 加密金鑰變更為解密金鑰

  1. 執行下列指令來開啟 .boto 檔案:
nano .boto
  1. 在目前的 encryption_key 行開頭新增 # 字元,將該行註解排除。
注意:nano 編輯器底部提供快速指令,方便您迅速找到檔案內容。使用 Where Is 快速指令,即可迅速找到 #encryption_key= 行程式碼。
  1. 移除 # 字元來取消註解 decryption_key1,然後將 encryption_key 行目前的金鑰複製到 decryption_key1 行。

結果 (這是輸出內容範例)

變更前: encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= # decryption_key1= 變更後: # encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
  1. 依序按下 Ctrl+OEnter 鍵儲存 boto 檔案,然後按下 Ctrl+X 退出 nano 編輯器。
注意:實際上會刪除 encryption_key 行的舊 CSEK 金鑰。

產生另一個 CSEK 金鑰並新增到 boto 檔案

  1. 執行下列指令來產生新的金鑰:
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
  1. 從指令輸出中複製產生的金鑰值,並排除 b'\n'。金鑰格式應該是 tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
  2. 如要開啟 boto 檔案,請執行下列指令:
nano .boto
  1. 取消註解加密金鑰,並將新的金鑰值貼入 encryption_key=

結果 (這是輸出內容範例)

變更前: # encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= 變更後: encryption_key=HbFK4I8CaStcvKKIx6aNpdTse0kTsfZNUjFpM+YUEjY=
  1. 依序按下 Ctrl+OEnter 鍵儲存 boto 檔案,然後按下 Ctrl+X 退出 nano 編輯器。

重寫檔案 1 的金鑰並註解排除舊的解密金鑰

如果檔案已加密,重寫解密檔案就是使用先前設定的 decryption_key1 來將檔案解密,然後使用新的 encryption_key 為檔案加密。

您將重寫 setup2.html 的金鑰,但不會重寫 setup3.html 的金鑰,因此可以看看未適當輪替金鑰時會發生的情況。

  1. 執行下列指令:
gsutil rewrite -k gs://$BUCKET_NAME_1/setup2.html
  1. 如要開啟 boto 檔案,請執行下列指令:
nano .boto
  1. 再次新增 # 字元,將目前的 decryption_key1 行註解排除。

結果 (這是輸出內容範例)

變更前: decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= 變更後: # decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
  1. 依序按下 Ctrl+OEnter 鍵儲存 boto 檔案,然後按下 Ctrl+X 退出 nano 編輯器。
注意:實際上會刪除 decryption_key1 行的舊 CSEK 金鑰。

下載 setup2 和 setup3

  1. 如要下載 setup2.html 檔案,請執行下列指令:
gsutil cp gs://$BUCKET_NAME_1/setup2.html recover2.html
  1. 如要下載 setup3.html 檔案,請執行下列指令:
gsutil cp gs://$BUCKET_NAME_1/setup3.html recover3.html 注意:會發生這樣的情況,是因為沒有使用新金鑰重寫 setup3.html,導致系統無法再將 setup3.html 解密,複製作業也會失敗。

您已成功輪替 CSEK 金鑰。

工作 5:啟用生命週期管理

在這項工作,您會啟用 Cloud Storage bucket 的生命週期管理,以便在一定的時間後自動刪除物件。

查看 bucket 目前的生命週期政策

  • 執行下列指令,查看目前的生命週期政策:
gsutil lifecycle get gs://$BUCKET_NAME_1 注意:目前尚未設定生命週期,您需要在後續步驟建立生命週期。

建立 JSON 生命週期政策檔案

  1. 如要建立檔案並命名為 life.json,請執行下列指令:
nano life.json
  1. 將以下的值貼入 life.json 檔案:
{ "rule": [ { "action": {"type": "Delete"}, "condition": {"age": 31} } ] } 注意: 這些指示會指定 Cloud Storage 在 31 天後刪除物件。
  1. 依序按下 Ctrl+OEnter 鍵儲存檔案,然後按下 Ctrl+X 退出 nano。

設定和驗證政策

  1. 如要設定政策,請執行下列指令:
gsutil lifecycle set life.json gs://$BUCKET_NAME_1
  1. 如要驗證政策,請執行下列指令:
gsutil lifecycle get gs://$BUCKET_NAME_1

點選「Check my progress」,確認目標已達成。 啟用生命週期管理

工作 6:啟用版本管理

在這項工作,您會為 Cloud Storage bucket 啟用版本管理,以免意外刪除或修改資料。

查看 bucket 的版本管理狀態並啟用版本管理

  1. 請執行下列指令,查看 bucket 目前的版本管理狀態:
gsutil versioning get gs://$BUCKET_NAME_1 注意:若政策已遭停權,表示該政策並未啟用。
  1. 如要啟用版本管理,請執行下列指令:
gsutil versioning set on gs://$BUCKET_NAME_1
  1. 如要驗證版本管理是否已啟用,請執行下列指令:
gsutil versioning get gs://$BUCKET_NAME_1

點選「Check my progress」,確認目標已達成。 啟用版本管理

在 bucket 建立多個版本的範例檔案

  1. 檢查範例檔案的大小:
ls -al setup.html
  1. 開啟 setup.html 檔案:
nano setup.html
  1. 在 setup.html 檔案中刪除任意 5 行程式碼,來變更檔案大小。
  2. 依序按下 Ctrl+OEnter 鍵儲存檔案,然後按下 Ctrl+X 退出 nano 編輯器。
  3. 使用 -v 版本管理選項,將檔案複製到 bucket:
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1
  1. 開啟 setup.html 檔案:
nano setup.html
  1. 再從 setup.html 檔案中刪除其他 5 行程式碼,來變更檔案大小。
  2. 依序按下 Ctrl+OEnter 鍵儲存檔案,然後按下 Ctrl+X 退出 nano 編輯器。
  3. 使用 -v 版本管理選項,將檔案複製到 bucket:
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1

列出所有檔案版本

  1. 如要列出檔案的所有版本,請執行下列指令:
gcloud storage ls -a gs://$BUCKET_NAME_1/setup.html
  1. 反白選取並複製最舊版本 (第一個列出的版本) 的檔案名稱,後續步驟會將這個版本稱為 [VERSION_NAME]。
注意:務必複製檔案的完整路徑,路徑開頭為 gs://
  1. 將版本的值保存在環境變數 [VERSION_NAME] 中。
export VERSION_NAME=<Enter VERSION name here>
  1. 使用 echo 進行驗證:
echo $VERSION_NAME

結果 (這是輸出內容範例)

gs://BUCKET_NAME_1/setup.html#1584457872853517

下載檔案最舊的原始版本並驗證復原作業

  1. 下載檔案的原始版本:
gcloud storage cp $VERSION_NAME recovered.txt
  1. 執行下列指令來驗證復原作業:
ls -al setup.html ls -al recovered.txt 注意:您已透過備份版本將原始檔案復原。您會發現原始版本的檔案大小比目前版本更大,因為您先前刪除了幾行程式碼。

工作 7:將目錄同步處理到 bucket

在這項工作,您會透過 Cloud Storage bucket,使用 gsutil rsync 指令,同步處理本機目錄及其子目錄。

建立巢狀結構的目錄並同步處理到 bucket

請建立巢狀結構的目錄,這樣反覆將目錄複製到 bucket 時,才能掌握作業情況。

  1. 執行下列指令:
mkdir firstlevel mkdir ./firstlevel/secondlevel cp setup.html firstlevel cp setup.html firstlevel/secondlevel
  1. 如要在 VM 和 bucket 上同步處理 firstlevel 目錄,請執行下列指令:
gsutil rsync -r ./firstlevel gs://$BUCKET_NAME_1/firstlevel

查看結果

  1. 前往 Google Cloud 控制台的「導覽選單」「導覽選單」圖示,依序點選「Cloud Storage」>「bucket」
  2. 點選「[BUCKET_NAME_1]」。請留意 bucket 中的子資料夾。
  3. 依序點按 /firstlevel/secondlevel
  4. 比較您在 Cloud 控制台看到的內容和下列指令的結果:
gcloud storage ls -r gs://$BUCKET_NAME_1/firstlevel
  1. 退出 Cloud Shell:
exit

工作 8:回顧

在本實驗室中,您學到如何建立和使用 bucket 與物件,並瞭解下列 Cloud Storage 功能:

  • CSEK:客戶提供的加密金鑰
  • 使用自己的加密金鑰
  • 輪替金鑰
  • ACL:存取控制清單
  • 將 ACL 設定為私人和修改為公開
  • 生命週期管理
  • 設定政策,在 31 天後刪除物件
  • 版本管理
  • 建立版本和還原先前的版本
  • 目錄同步處理
  • 反覆將 VM 目錄同步處理到 bucket

摘要

S3 和 Cloud Storage 都提供物件層級的儲存空間,也具備存取控管機制、加密、版本管理和生命週期管理等功能。現在就來看看這兩項服務的異同處:

相似處:

  • Cloud Storage 和 S3 都提供存取控管清單 (ACL),可以進行精細的存取控管。
  • 兩項服務都提供不同的儲存空間級別,可調整資料存取頻率及備援資料,提高成本效益。
  • 兩項服務都有物件生命週期管理功能,可自動調整物件的儲存空間級別。
  • 兩項服務都具備版本管理功能,可避免檔案遭意外刪除或覆寫。
  • 兩項服務都有目錄同步處理功能,可隨時更新物件,並確保來源位置和目標 bucket 物件相符。

差異處:

  • 在 Google Cloud,您可以修改 gsutil 的 .boto 設定檔,寫入客戶提供的加密金鑰來啟用 bucket 加密。在 AWS,則是使用「put-bucket-encryption」指令,並在「--server-side-encryption-configuration」參數指定金鑰,透過 AWS CLI 啟用儲存貯體加密。
  • 在 Google Cloud,所有儲存空間級別都由單一個服務管理;而在 AWS,封存儲存類別另外由 S3 Glacier 管理,標準和不常類別則由 S3 管理。

關閉研究室

如果您已完成研究室,請按一下「End Lab」(關閉研究室)。Google Cloud Skills Boost 會移除您使用的資源,並清除所用帳戶。

您可以針對研究室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」(提交)

星級評等代表您的滿意程度:

  • 1 星 = 非常不滿意
  • 2 星 = 不滿意
  • 3 星 = 普通
  • 4 星 = 滿意
  • 5 星 = 非常滿意

如果不想提供意見回饋,您可以直接關閉對話方塊。

如有任何想法、建議或指教,請透過「Support」(支援) 分頁提交。

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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