Cloud Storage 初探 - CLI/SDK

概述

Google Cloud Storage 提供世界級的儲存服務並且你可以在任何時間取回任何大小的資料。 Google Cloud Storage 提供了很多的使用情況, 包含網站內容, 歸檔類型或是災後復原類型的資料儲存, 或是提供使用者大檔案物件直接下載的方式。

在這個手把手教程中, 你將會學習到如何使用 Google Cloud Platform 命令列工具 來建立一個儲存區, 然後上傳物件, 建立資料夾以及子資料夾, 以及讓這些物件可被公開存取。

在本教程中, 你將能夠在主控台的 Navigation menu > Storage 核對你的進度。 你只需要在每一個指令之後重整你的瀏覽器來檢視你建立的新項目




前言

本篇主要是利用 Google 的 Qwiklab 平台學習的同時,做的一份學習筆記




設定及要求

在你按下 Start Lab 按鈕之前

詳讀所有的教學。Labs 是有時間限制的,而且你不可以停止時間倒數。倒數計時器在你按下 Start Lab 按鈕後開始倒數,上面顯示的時間為你還能使用 Cloud 資源的時間。

Qwiklabs 的手把手環境,讓你可以在真實環境中來操作進行 Qwiklabs 上提供的課程,而不是在一個模擬或是展示的環境。我們透過提供你一個全新的、暫時的帳號密碼,在計時器歸零之前,你可以用來登入並存取 Google Cloud Platform。

你需要什麼?

要完成這個 lab ,你需要:

  • 一個一般的網路瀏覽器(推薦 Chrome)
  • 完成這個 lab 的時間

備註: 如果你已經有你自己的個人 GCP 帳號或專案,請不要使用在這一個 lab

現在你已經開始你的 lab, 你將會登入 Google Cloud Shell 主控台,然後開啟命令列工具

如何開始你的 lab ,然後登入 Console?

  1. 按下 Start Lab 按鈕。如果你需要付費,會有一個彈出視窗來讓你選擇付費的方式。在左方你會看到一個面板,上面有暫時的帳號密碼,你必須使用這些帳號密碼在此次 lab

  1. 複製 username , 然後點擊 Open Google Console。 Lab 會開啟另外一個視窗,顯示選擇帳號的頁面

tip: 開啟一個全新的視窗,然後跟原本的頁面並排

  1. 選擇帳號頁面, 點擊 Use Another Account

  1. 登入頁面開啟,貼上之前複製的 username 以及 password ,然後貼上

重要:必須使用之前於 Connection Details 面板 取得的帳號密碼,不要使用你自己的 Qwiklabs 帳號密碼。 如果你有自己的 GCP 帳號,請不要用在這裡(避免產生費用)

  1. 點擊並通過接下來的頁面:
    • 接受terms以及conditions
    • 不要增加recovery optoinstwo factor authentication (因為這只是一個臨時帳號)
    • 不要註冊免費體驗

稍待一些時候, GCP 控制台將會在這個視窗開啟。

注意:按下左上方位於Google Cloud Platform 隔壁的 Navigation menu ,你可以瀏覽選單,裡面有一系列的 GCP 產品以及服務


啟動 Google Cloud Shell

Google Cloud Shell 是載有開發工具的虛擬機器。它提供了5GB的 home 資料夾,並且運行在 Google Cloud 上。 Google Cloud Shell 讓你可以利用 command-line 存取 GCP 資源

  1. GCP 控制台 ,右上的工具列,點擊 Open Cloud Shell 按鈕

  1. 在打開的對話框裡,按下 START CLOUD SHELL:

你可以立即按下 START CLOUD SHELL 當對話視窗打開。

連結並提供環境會需要一點時間。當你連結成功,這代表你已成功獲得授權,且此專案已被設為你的專案ID,例如:

gcloudGoogle Cloud Platform 的 command-line 工具,他已事先被安裝在 Cloud Shell 並且支援自動補齊

使用這個 command ,你可以列出有效帳戶名稱:

gcloud auth list

輸出:

Credentialed accounts:
- <myaccount>@<mydomain>.com (active)

範例輸出:

Credentialed accounts:
- google1623327_student@qwiklabs.net

你可以使用以下 command 來列出專案 ID

gcloud config list project

輸出:

[core]
project = <project_ID>

範例輸出:

[core]
project = qwiklabs-gcp-44776a13dea667a6

gcloud 的完整文件可以參閱 Google Cloud gcloud Overview




建立一個儲存區

執行 gsutil mb 指令並取代 unique name 來建立一個儲存區

gsutil mb gs://YOUR-BUCKET-NAME/

命名規則:

  • 不要有機敏資訊,因為儲存區的名字是公開可被大家看到的
  • 儲存區的名字一定只可以有 小寫字母 ,數字, -, _, ., 若是名字含有 ., 需要驗證
  • 儲存區的名字必須由數字或字母來開始以及結束
  • 儲存區的名字必須含有 3 到 63 的字元,含有 . 的名字最多 222 個字元,但是每個被 . 分開的字元,最多不可超過 63 字元。
  • 儲存區的名字不可以帶點十進制的方式表示,像是 IP 位址 (例如, 192.168.5.4)
  • 儲存區的名字不可由 goog 開頭
  • 儲存區的名字不可含有 google 或近似字串
  • 還有,為了符合 DNS 命名規則以及之後的相容性,不可使用 _, 或是兩個 . 相連,或與 dash 相連,例如 .., 或 -., 或 .-, 這些都不符合 DNS 命名規則

如果成功執行,回應如下:

Creating gs://YOUR-BUCKET-NAME/...

你已經建立一個可以用來儲存你的東西的儲存區
備註: 如果名字已經被使用了,可能是你或別人,回應如下

Creating gs://YOUR-BUCKET-NAME/... ServiceException: 409 Bucket YOUR-BUCKET-NAME already exists.

用別的名字在試一次




測試是否完成

點擊 check my progress 來驗證任務是否完成。如果你已經成功完成 Cloud Storage 儲存區,你將看到一個評定的分數




測試你的理解

底下有一些問題用來鞏固你對這個 lab 概念的了解,盡你所能的去回答吧

  • 每個儲存區中,都有一個預設的儲存類別,你可以在建立的時候指定它
    • true
    • false



上傳一個物件到你的儲存區

現在上傳一個物件到你的儲存區

先下載這個圖片到暫時性的 instance (ada.jpg) 到 Cloud Shell

wget --output-document ada.jpg https://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Ada_Lovelace_portrait.jpg/800px-Ada_Lovelace_portrait.jpg

使用 gsutil cp 指令, 從本地儲存的位置上傳圖片到你建立的儲存區中:

gsutil cp ada.jpg gs://YOUR-BUCKET-NAME

訣竅: 當你輸入你的儲存區的名字, 可以使用 tab 來自動補齊
你可以從 Command Line 看到圖片被上傳了,你已經完成了儲存一個物件在你的儲存區中!
現在讓我們刪掉它

rm ada.jpg



從儲存區下載物件

使用 gsutil cp 指令, 將你存在儲存區的圖片下載到 Cloud Shell

gsutil cp -r gs://YOUR-BUCKET-NAME/ada.jpg .

如果成功的話,應會回傳如下:

Copying gs://YOUR-BUCKET-NAME/ada.jpg...
/ [1 files][299.6 KiB/299.6 KiB]
Operation completed over 1 objects/299.6 KiB.

你剛剛已經完成了從儲存區下載圖片!




複製一個物件到儲存區內的一個資料夾

使用 gsutil cp 指令來建立一個名為 image-folder 的資料夾,並且將圖片(ada.jpg) 複製過去

gsutil cp gs://YOUR-BUCKET-NAME/ada.jpg gs://YOUR-BUCKET-NAME/image-folder/

備註: 與本地的文件系統相比,在 Google Cloud Storage 的資料夾有一些限制, 但很多相同的操作是都有支援的。

如果成功的話,應該會回傳如下:

Copying gs://YOUR-BUCKET-NAME/ada.jpg [Content-Type=image/png]...
- [1 files] [ 299.6 KiB/ 299.6 KiB]
Operation completed over 1 objects/299.6 KiB

現在,圖片已經被複製到儲存區內的新的資料夾內

測試是否完成

點擊 check my progress 來驗證任務是否完成。如果你已經成功上傳物件到 cloud storage 的資料夾的話,你將看到一個評定的分數




列出儲存區或資料夾內的內容

gsutil ls gs://YOUR-BUCKET-NAME

如果成功,回傳應如下:

gs://YOUR-BUCKET-NAME/ada.jpg
gs://YOUR-BUCKET-NAME/image-folder/

這些是目前在儲存區內的東西




列出物件的細節

使用 gsutil ls 指令, 配合 -l flag 來取得我們上傳圖片的細節資訊:

gsutil ls -l gs://YOUR-BUCKET-NAME/ada.jpg

如果成功,應會回傳:

306768  2017-12-26T16:07:570Z  gs://YOUR-BUCKET-NAME/ada.jpg
TOTAL: 1 objects, 30678 bytes (299.58 KiB)

現在你知道圖片的大小和建立的日期了




讓物件可被公開存取

使用 gsutil acl ch 指令來給予全部使用者對儲存區內的物件有讀的權限

gsutil acl ch -u AllUsers:R gs://YOUR-BUCKET-NAME/ada.jpg

如果成功,應該會回傳:

Updated ACL on gs://YOUR-BUCKET-NAME/ada.jpg

你的圖片目前已經可被公開存取

測試是否完成

點擊 check my progress 來驗證任務是否完成。如果你已經成功的從 cloud storage 分享物件,你將看到一個評定的分數

驗證你的圖片是否公開可被存取。 到 Navigation menu > Storage , 然後點擊你的儲存區。 你應會看到你圖片的公開存取格子是有被打勾的,點擊檔案,然後圖片將會在瀏覽器的新視窗被開啟




測試你的理解程度

底下有一些問題用來鞏固你對這個 lab 概念的了解,盡你所能的去回答吧

  • 存取控制清單 Access Control List (ACL) 是一種可用來定義誰可以存取你的儲存區的一種機制
    • true
    • false



移除公開存取權限

若要移除被存取的權限,使用以下指令

gsutil acl ch -d AllUsers gs://YOUR-BUCKET-NAME/ada.jpg

如果成功,回傳應像是:

Updated ACL on gs://YOUR-BUCKET-NAME/ada.jpg

現在你已經移除對這物件的公開存取權限,你可以驗證看看,點擊控制面板中的 Refresh 按鈕。
打勾符號將會被移除,這時如果你重新整理圖片,會出錯




測試你的理解程度

底下有一些問題用來鞏固你對這個 lab 概念的了解,盡你所能的去回答吧
你可以藉由移除什麼樣的權限屬性來停止公開分享物件:

  • allUsers
  • 移除 project owner role
  • 更新儲存區類別

刪除物件

使用 gsutil rm 來移除一個物件 - 在儲存區中的圖片

gsutil rm gs://YOUR-BUCKET-NAME/ada.jpg

如果成功,回傳應會如下:

Removing gs://YOUR-BUCKET-NAME/ada.jpg...

重新刷新面板。 複製的圖片檔案已經不存在 Cloud Storage 了 (儘管複製在 image-folder 資料夾內還是存在唷)

恭喜!

你已經完成本教程

MongoDB 學習筆記 Cloud Storage 初探 - 主控台

留言

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×