使用AppEngine创建云存储桶

时间:2014-12-15 23:32:14

标签: php google-app-engine google-cloud-platform google-cloud-storage

有没有办法使用AppEngine创建一个存储桶?

我已经使用use google\appengine\api\cloud_storage\CloudStorageTools;来编写和读取文件,但我无法弄清楚如何创建存储桶。

编辑我不想手动创建存储桶,而是通过代码创建存储桶。

3 个答案:

答案 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附加到存储桶名称。