概述
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?
- 按下 Start Lab 按鈕。如果你需要付費,會有一個彈出視窗來讓你選擇付費的方式。在左方你會看到一個面板,上面有暫時的帳號密碼,你必須使用這些帳號密碼在此次 lab
- 複製
username
, 然後點擊Open Google Console
。 Lab 會開啟另外一個視窗,顯示選擇帳號
的頁面
tip: 開啟一個全新的視窗,然後跟原本的頁面並排
- 在
選擇帳號
頁面, 點擊Use Another Account
- 登入頁面開啟,貼上之前複製的
username
以及password
,然後貼上
重要:必須使用之前於 Connection Details 面板
取得的帳號密碼,不要使用你自己的 Qwiklabs 帳號密碼。 如果你有自己的 GCP 帳號,請不要用在這裡(避免產生費用)
- 點擊並通過接下來的頁面:
- 接受
terms
以及conditions
- 不要增加
recovery optoins
或two 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
資源
- 在
GCP 控制台
,右上的工具列,點擊Open Cloud Shell
按鈕
- 在打開的對話框裡,按下
START CLOUD SHELL
:
你可以立即按下 START CLOUD SHELL
當對話視窗打開。
連結並提供環境會需要一點時間。當你連結成功,這代表你已成功獲得授權,且此專案已被設為你的專案ID,例如:
gcloud 是 Google Cloud Platform
的 command-line 工具,他已事先被安裝在 Cloud Shell
並且支援自動補齊
使用這個 command ,你可以列出有效帳戶名稱:
gcloud auth list |
輸出:
Credentialed accounts: |
範例輸出:
Credentialed accounts: |
你可以使用以下 command 來列出專案 ID
gcloud config list project |
輸出:
[core] |
範例輸出:
[core] |
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... |
你剛剛已經完成了從儲存區下載圖片!
複製一個物件到儲存區內的一個資料夾
使用 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]... |
現在,圖片已經被複製到儲存區內的新的資料夾內
測試是否完成
點擊 check my progress
來驗證任務是否完成。如果你已經成功上傳物件到 cloud storage 的資料夾的話,你將看到一個評定的分數
列出儲存區或資料夾內的內容
gsutil ls gs://YOUR-BUCKET-NAME |
如果成功,回傳應如下:
gs://YOUR-BUCKET-NAME/ada.jpg |
這些是目前在儲存區內的東西
列出物件的細節
使用 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 |
現在你知道圖片的大小和建立的日期了
讓物件可被公開存取
使用 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 資料夾內還是存在唷)
恭喜!
你已經完成本教程
留言