【发布时间】:2016-03-30 13:32:20
【问题描述】:
我一直在努力理解如何使用 Go 在 App Engine 上正确使用 GCS。我读过一些堆栈帖子提到 Go App Engine 开发服务器不模拟 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 应用引擎应用程序访问云存储?
【问题讨论】:
标签: google-app-engine go google-cloud-storage