標籤:
關於Google Cloud Storage
Google Cloud Storage有益於大檔案的儲存與服務(serve)。此外,Cloud Storage提供了對存取控制清單(ACLs)的使用,提供了對上傳中斷的恢複功能以及其他的特性。Google Cloud Storage client庫對應用自動使用恢複功能,提供了一種健壯的導(stream)資料到Cloud Storage的方法。
關於client library
Google Cloud Storage client庫使你的應用可以從Cloud Storage的buckets讀檔案或向其寫檔案。這個庫支援對Cloud Storage的大量資料的讀寫處理,能夠進行內部錯誤處理和重試,所以你不需要自己寫代碼來完成這種事情。而且,它使用預讀取提供了讀緩衝,所以你的應用可以變得更有效。當對Cloud Storage進行讀寫時,client庫使用HTTPS,所以你的資料在傳輸過程中是加密的。
Google Cloud Storage client庫包含以下的功能:
● 一個介面對象(GcsService),支援以下的Cloud Storage訪問:
1.將一列存在的Cloud Storage對象組成一個新對象(GcsService.compose)。
2.複製一個存在的Cloud Storage對象(GcsService.copy)
3.建立一個新的或複寫一個幾經存在的Cloud Storage對象(GcsService.createOrReplace)
4.刪除一個Cloud Storage對象(GcsService.delete)
5.為Cloud Storage對象擷取中繼資料(GcsService.getMetaData)
6.列出一個指定的bucket的內容(GcsService.list)
7.開啟一個緩衝讀取通道從一個大的Cloud Storage對象中讀資料[streaming in data](GcsService.openPrefetchingReadChannel)
8.開啟一個無緩衝讀取通道從一個小的Cloud Storage對象中讀資料[streaming in data](GcsService.openReadChannel)
● 一個可寫位元組通道(GcsOutputChannel),緩衝或無緩衝地寫到Cloud Storage.
下載client庫
對於下載說明和分發內容,參見 downloads頁
使用client庫
從下面的選項中選擇一個:
● 使用預設的Cloud Storage bucket:一個有免費配額的已配置的bucket
● 如果你不想使用預設的bucket,你首先需要啟用Cloud Storage。
可選的訪問Cloud Storage的方法
Google Cloud Storage client庫提供了一個與GAE緊密整合的讀寫Cloud Storage的方法。使得GAE應用能夠在Cloud Storage中建立對象和提供服務。
除了使用Google Cloud Storage client庫以外還有其他的方法可以從GAE訪問Cloud Storage。你也可以使用下面方法中的任一個:
● Blobstore API
● Cloud Storage REST API
● Cloud Storage Browser
● gsutil Tool
Blobstore API
你可以使用Blobstore API來上傳對象到Cloud Storage或從Cloud Storage提供對象[serve objects]。你需要使用BlobstoreService.createGsBlobKey()方法建立一個blob key代表Cloud Storage 對象。這個方法對於從網頁上傳檔案是有用的。當Blobstore API和Images API一起使用時,你可以擁有很強大的方法來提供映像[serve images],因為你可以直接從Cloud Storage中提供映像,繞開了App Engine應用,這可以節省費用[saves on instance hour costs]。
Cloud Storage REST API
你可以使用Cloud Storage REST API讀寫Cloud Storage。如果你要尋找client庫沒有提供的某個明確特性的話,REST API將是一個不錯的選擇。
然而,client庫包含了App Engine最佳化,所以使用REST API可能需要額外的開發時間。注意:App Engine程式開發伺服器支援Cloud Storage Client。它不支援REST API。
Cloud Storage Browser
如果你需要快速上傳對象,你可以使用Cloud Storage Browser。
關鍵的Cloud Storage概念
參見 Cloud Storage documentation查閱完整的概念和技術列表。下面的部分總結了Google Cloud Storage client庫的重要概念。
Buckets,objects,ACLs
一個bucket就是可以讀寫檔案的一個儲存位置。在使用Cloud Storage client庫的時候,你必須總是指定一個bucket。你的項目可以訪問多個buckets。client庫不支援bucket的建立。你可以通過Cloud Storage browser或gsutil工具手動建立。
存取控制清單(ACLs)控制對buckets以及其中的對象的訪問。你的項目和你的App Engine 應用被添加到了ACL,這個ACL允許在啟用期間訪問bucket。這個允許訪問bucket的ACL和潛在的許多管理bucket中對象的ACLs是不同的。因此,你的應用對其啟用的bucket擁有讀寫權限(your app has read and write privileges to the bucket(s) it is activated for),但是它僅僅對在bucket中的由它建立的對象擁有完整的許可權。對於其他的應用或個人建立的對象,你的存取權限僅限於對象建立者賦予的部分。
如果一個對象在一個沒有顯式定義ACL的bucket中被建立的話,它將會使用bucket擁有者分配給bucket的預設的對象ACL。如果bucket的擁有者沒有指定預設的對象ACL,那麼對象預設就是public-read,這意味著任何被允許訪問bucket的人可以讀取這個對象。
ACLs以及Google Cloud Storage client庫
使用client庫的應用不能改變bucket ACL,但是它可以指定一個控制由它建立的對象的ACL。這個可以獲得的ACL配置在GcsService.FcsFileOptions
object文檔的下面做了說明。
修改Cloud Storage 對象
一旦你在bucket中建立了一個對象,它就不能被修改和附加。你必須使用一個包含了你想要變更的內容的同名的新對象來覆蓋這個對象。
Cloud Storage和子目錄
Cloud Storage client庫在建立一個對象時,支援子目錄分隔字元。但是在Cloud Storage中並沒有真正的子目錄。一個子目錄在Cloud Storage中就是對象檔案名稱的一部分。
比如,你可能認為建立一個對象somewhere/over/the/rainbow.mp3會將檔案rainbow.mp3儲存在子目錄somewhere/over/the/。實際上,對象的名字被設定為了somewhere/over/the/rainbow.mp3。
Retries and exponential backoff
在訪問Cloud Storage的時候,萬一發生了逾時失敗,Google Cloud Storage client庫會提供一個可配置的機制來自動請求重試。這個機制也提供了exponential backoff來決定最佳處理速度。具體的關於exponential backoff的說明,參見backoff。
要改變retries和backoff的預設,請使用 RetryParams類。
在development app server上使用client庫
從SDK的版本1.8.1開始,在development server上可以使用client庫。它使用本地磁碟提供了Cloud Storage類比。
價格,配額和限制
在使用Google Cloud Storage client庫調用Cloud Storage方面沒有寬頻費用。然而卻有操作和儲存費用,以及針對URL fetch配額的調用次數,因為這個庫使用URL Fetch服務和Cloud Storage互動。
如果你使用預設的Cloud Storage bucket,你有一個免費的配額。如果你需要更多的配額,你需要讓你的應用開始計費,所以你需要為額外的配額付費。
如果你不想使用預設的bucket,你需要啟用Cloud Storage( activate Cloud Storage)。如果你選擇這樣做,那麼將沒有免費配額並且所有儲存在Cloud Storage的資料都要按正常的Cloud Storage資料存放區費用付費。Cloud Storage是一個付費使用的服務;你將會被要求按Cloud Storage的價格表付費。
接下來做什麼
1.下載client庫
2.建立一個App Engine項目並啟用Cloud Storage。
3.可選地,如果你有一個使用舊的Cloud Storage API的已有應用,遷移你的應用。
4.查看這個簡要的Getting Started指導快速判斷對client庫的使用。
5.上傳和部署你的應用到生產App Engine上。
6.在Cloud Storage上測試應用預期的行為。
Java Client for Google Cloud Storage