使用App Engine写入GCS Bucket

时间:2015-02-13 00:21:40

标签: php google-app-engine

谷歌文档声明

  

GCS流包装器内置于运行时,在您提供以gs://开头的文件名时使用。

当我查看app.yaml时,我会看到选择运行时的位置。我选择了php运行时。但是,当我尝试写入我的存储桶时,我收到一条错误消息,指出找不到gs://的包装器。但是当我尝试使用google https://cloud.google.com/appengine/docs/php/gettingstarted/helloworld提供的helloworld.php脚本写入我的存储桶并对其进行修改以便它显示

<?php
file_put_contents('gs://<app_id>.appspot.com/hello.txt', 'Hello');

我必须部署应用程序才能使写入成功。我不明白为什么每次都要部署应用程序来获取我需要写入我的存储桶的包装器。为什么我不能从随机的PHP脚本写入我的桶?

2 个答案:

答案 0 :(得分:2)

谷歌说

  

&#34;在开发服务器中,当指定Google云端存储URI时,我们通过读取和写入用户本地文件系统上的临时文件来模拟此功能&#34;

所以,&#34; gs://&#34;在本地模拟 - 使用流包装器实际写入GCS存储桶,它必须从App Engine本身运行。

答案 1 :(得分:0)

尝试这样的事情:

use google\appengine\api\cloud_storage\CloudStorageTools;

$object_url = "gs://bucket/file.png";
$options = stream_context_create(['gs'=>['acl'=>'private', 'Content-Type' => 'image/png']]);
$my_file = fopen($object_url, 'w', false, $options);
fwrite($my_file, $file_data));
fclose($my_file);