在Golang中使用Google Cloud Platform中的存储桶

时间:2018-08-08 19:44:25

标签: go google-cloud-platform google-cloud-storage

我正在尝试在Google Cloud Platform上托管Go应用,我需要它来进行一些文件编写。 GCP不允许您直接在App Engine中进行文件写入,但要求您使用存储桶。

从他们的文档中,您可以像这样

访问PHP中的存储桶
$default_bucket = CloudStorageTools::getDefaultGoogleStorageBucketName();
$fp = fopen("gs://${default_bucket}/hello_default_stream.txt", 'w');
fwrite($fp, $newFileContent);
fclose($fp);

有对应的Golang吗?

1 个答案:

答案 0 :(得分:1)

正如Daz在第一条评论中所分享的那样,在the docs for Standard上有一个关于如何执行此操作的介绍。尽管您也可以使用被取代的cloud.google.com/go/storage(如google.golang.org/appengine/blobstore中所述),但它使用docs库。

使用这些文档,您可以简化它们,直到获得以下代码(对其进行测试并按预期工作):

package minimal_gcs

import (
        s "cloud.google.com/go/storage"
        a "google.golang.org/appengine"
        h "net/http"
)

func init() {
        h.HandleFunc("/", func(w h.ResponseWriter, r *h.Request) {
                cx := a.NewContext(r)
                c, _ := s.NewClient(cx)
                wr := c.Bucket("<bucket_id>").Object("<object_id>").NewWriter(cx)
                _, _ = wr.Write([]byte("Hello World!!1"))
                _ = wr.Close()
        })
}

请注意,这确实是不好的代码(没有错误处理,...),但是我认为显示使用Go处理GAE标准中的GCS文件的基本步骤很有用。