2017-10-09 1 views
0

私はGoogleコンソールのUIを使用してバケットを作成しました。バケット内のオブジェクトをプログラムでアップロードしたいのですが。私はGoogleからドキュメントをチェックした。 https://cloud.google.com/storage/docs/object-basics#uploadGoogle Storage Bucketに対するオブジェクトの作成権限がプログラムによって発生しました。

$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プログラムの実行に使用しているアカウントには、バケットへの書き込みアクセス権がありません。アプリエンジンやGCEなどの別のGoogle Cloud環境で実行していますか?その場合、あなたのプログラムはアプリケーションデフォルト資格情報で実行されている可能性があります。これは自分自身と同じものではありません。問題のバケットのエラーメッセージの所有権に記載されているアカウントを許可し、問題を解決する必要があります。

+0

ありがとうございました。私は(Googleコンソールからダウンロードした資格情報を '.json'として)サービスアカウントキーを' putenv'として送信しています。これは、現在localhost上で実行されている単純なLaravelアプリケーションです。私は許可を与えようと努力していませんでした。 –

関連する問題