有没有办法使用AppEngine创建一个存储桶?
我已经使用use google\appengine\api\cloud_storage\CloudStorageTools;
来编写和读取文件,但我无法弄清楚如何创建存储桶。
编辑我不想手动创建存储桶,而是通过代码创建存储桶。
答案 0 :(得分:1)
有两种方法可以创建Google云端存储分区。
1)从新的管理控制台创建它们 - console.developers.google.com,点击“存储”,然后点击“云存储”。如果您已启用结算,则应该会看到添加存储桶的选项。
2)使用默认存储桶。转到appengine.google.com,点击“应用程序设置”,您会看到列出的“Google云存储存储桶”。如果没有,请滚动到底部,然后单击“云集成”下的“创建”。
请参阅此文章了解详情 - https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/activate
=== --- ===
关于如何构建正确的API调用的PHP参考:
https://github.com/google/google-api-php-client/blob/master/src/Google/Service/Storage.php
您要呼叫的API位于:
https://cloud.google.com/storage/docs/json_api/v1/buckets/insert
因此,基本上,在您的代码中,您希望生成一个唯一的存储桶名称(因为命名空间对每个人都是通用的,因此所有简单的存储桶名称都被采用)。有些人所做的是将当前日期/时间附加到桶的名称,如(appID-date-time)。
您希望进行存储桶插入API调用以创建存储桶,然后进行对象插入API调用以将对象放入存储桶中。之后,您可以通过获取并修改它来操纵对象。
答案 1 :(得分:1)
查看用于执行其编程API的examples的云存储文档,以及有关身份验证的更多信息appengine docs。
答案 2 :(得分:0)
首先,确保您的项目设置正确,并按following the instructions here包含商店API。
以下代码将创建一个新存储桶,然后列出与您的项目关联的所有存储桶:
require_once 'vendor/autoload.php';
$projectId = "example"; // your app engine id (example.appspot.com).
$client = new Google_Client();
$client->useApplicationDefaultCredentials(); // This won't work locally.
$client->addScope(Google_Service_Storage::DEVSTORAGE_FULL_CONTROL);
$storage = new Google_Service_Storage($client);
// Create our new bucket.
$newBucket = new Google_Service_Storage_Bucket();
$newBucket->setName("test-bucket1");
try {
$test = $storage->buckets->insert($projectId, $newBucket);
print_r($test);
} catch (\Google_Service_Exception $e) {
$error = $e->getErrors()[0];
// Available: reason & message.
die("Error message: ". $error["message"]);
}
// List all our buckets.
$buckets = $storage->buckets->listBuckets($projectId);
foreach ($buckets['items'] as $bucket) {
printf("%s<br>", $bucket->getName());
}
请注意,此示例无法在本地运行,必须部署到Google的服务器。此外,存储桶名称必须是全局唯一的,因此请尝试将随机数或项目ID附加到存储桶名称。