2017-10-09 95 views
0

我已經使用谷歌控制檯的用戶界面創建了一個桶。我想以編程方式上傳Bucket中的一些對象。我檢查了Google的文檔。 https://cloud.google.com/storage/docs/object-basics#upload以編程方式在Google存儲桶中創建對象權限時出錯。

$storage = new StorageClient(); 
$file = fopen($source, 'r'); 
$bucket = $storage->bucket($bucketName); 
$object = $bucket->upload($file, [ 
    'name' => $objectName 
]); 
printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source), $bucketName, $objectName); 

問題是,回到關於向權限的錯誤。

{ 
"error": { 
"errors": [ 
{ 
"domain": "global", 
"reason": "forbidden", 
"message": "[email protected]erviceaccount.com does not have storage.objects.create access to object kjs-lms/0.mp3." 
} 
], 
"code": 403, 
"message": "[email protected]erviceaccount.com does not have storage.objects.create access to object kjs-lms/0.mp3." 
} 
} 

我試圖授予IAM角色的權限,但仍同樣的錯誤。

回答

0

您用於運行PHP程序的帳戶沒有對存儲區的寫入權限。您是否在應用引擎或其他Google雲環境(如GCE)中運行它?在這種情況下,您的程序很可能會使用Application Default Credentials運行,這與您自己運行的不一樣。授予相關存儲桶的錯誤消息所有權中提及的帳戶,並且應解決問題。

+0

謝謝你的回答。我發送(作爲'.json')服務帳戶密鑰的(從Google控制檯下載的憑證)爲'putenv'。這是一個當前在本地主機上運行的簡單Laravel應用程序。我試圖授予許可但仍然無法使用。 –

相關問題