有没有一种方法可以使用第二代本地应用程序引擎(dev_appserver.py)成功调用FindDefaultCredentials?

时间:2018-11-16 21:27:40

标签: google-app-engine go credentials

我正在使用“ go111”运行时来开发App Engine应用程序。根据{{​​3}},访问数据存储区应使用Migrating your App Engine app from Go 1.9 to Go 1.11。但是,调用package datastore失败,并显示“找不到默认凭据”。 有什么想法如何使用默认凭据访问数据存储吗?

2 个答案:

答案 0 :(得分:1)

在启动应用程序之前设置GOOGLE_APPLICATION_CREDENTIALS环境变量。

在第二代运行时中,如果您不使用任何google.golang.org/appengine API,则无需使用dev_appserver.py-您可以正常构建和启动应用程序(go build和/或go run)。

此外,显式传递凭据非常罕见。 cloud.google.com/go API都应自动为您找到您的凭据。在本地运行时,设置GOOGLE_APPLICATION_CREDENTIALSGOOGLE_CLOUD_PROJECT环境变量应足以运行。请参阅https://cloud.google.com/docs/authentication/production#obtaining_credentials_on_app_engine_standard_environment(请注意对此不常见的评论)。

答案 1 :(得分:0)

我刚刚使用..

使用本地应用引擎SDK
  • 将命令行参数--support_datastore_emulator=true传递给dev_appserver.py
  • 将命令行参数--datastore_emulator_port=9090传递给dev_appserver.py
  • DATASTORE_EMULATOR_HOST中将环境变量localhost:9090设置为app.yaml
  • DATASTORE_PROJECT_ID中将环境变量my project id设置为app.yaml

在Go 1.11代码中,我仅使用cloud.google.com/go/datastore创建了一个新的datastore.NewClient(ctx, "")客户端,该客户端将拾取环境变量并连接到本地数据存储模拟器(作为dev_appserver.py的一部分运行) )。