google-app-engine - 在 Appengine 上将 Google Cloud Storage 与 Golang 结合使用

标签 google-app-engine go google-cloud-storage

我一直在努力理解如何使用 Go 在 App Engine 上正确使用 GCS。我读过一些堆栈帖子,提到 Go App Engine Development Server 不模拟 GCS。 情况仍然如此吗?当我使用以下代码构建我的客户端时,我已经能够将对象存储到我的实际默认 GCS 中:

ctx := appengine.NewContext(r)
    jsonKey, err := ioutil.ReadFile("path/to/json.json")
    if err != nil {
        log.Fatal(err)
    }
    conf, err := google.JWTConfigFromJSON(
        jsonKey,
        storage.ScopeFullControl,
    )
    if err != nil {
        log.Fatal(err)
    }
    client, err := storage.NewClient(ctx, cloud.WithTokenSource(conf.TokenSource(ctx)))

这是在 App Engine 上使用云存储的首选方式吗?

我问是因为我很困惑为什么一些示例应用引擎代码不能正常工作。例如,我试图遵循此示例中的代码 (https://github.com/GoogleCloudPlatform/gcloud-golang/blob/master/examples/storage/appengine/app.go#L73)。您会注意到构建存储客户端仅使用

client, err := storage.NewClient(ctx)

使用此示例代码,我得到一个 googleapi: Error 401: Invalid Credentials, authError 错误。这是错误还是我做错了什么?我应该通过哪种方式从 Go 应用引擎应用程序访问云存储?

最佳答案

我也努力让 GCS 与 App Engine 一起工作。我在使用 PEM 和 JSON key 时遇到了冲突的文档。我把this presentation一起讨论这个问题并教人们如何将 GCS 与应用引擎一起使用。

我能够让 GCS 与 App Engine 一起工作。这是 working GCS app engine code .

我还做了一个详细说明所有这些的演讲 - this playlist 中有两三个视频详细介绍 GCS 和应用引擎。

关于google-app-engine - 在 Appengine 上将 Google Cloud Storage 与 Golang 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34447124/

相关文章:

python - GAE 取消订阅用户的存在

java - Uber/v1/payment-methods - 给出错误 "Unauthorized"且可用范围为空

google-cloud-storage - gsutil rsync 与 gzip 压缩

angular - 在 Google Cloud 的存储桶中强制执行 HTTP 到 HTTPS 重定向

java - Google App Engine Jersey 错误格式 json

java - 谷歌应用引擎 : understanding datastore transactions

go - 分配: new(Foo) vs Foo{}

google-app-engine - 您的应用程序不在 GOPATH 上 - 部署到 app Engine go1.12

http - 获取 HTTP 响应的所有 header 并在下一个 HTTP 请求中发回

google-cloud-platform - 区域 europe-west1 去了哪里?