我一直在努力了解如何使用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 App Engine应用程序访问云存储?
googleapi: Error 401: Invalid Credentials, authError
我努力让GCS也能与App Engine一起使用。我在使用PEM和JSON密钥之间遇到了冲突的文档。我将本演示文稿放在一起讨论此问题,并教人们如何在App Engine中使用GCS。
我能够使GCS与App Engine一起使用。这是工作中的GCS应用引擎代码。
我还进行了详细介绍所有内容的演讲- 此播放列表中有两个或三个视频,详细介绍了GCS和应用程序引擎。