1

尝试使用 Java 客户端 API 在本地模拟器上执行查询时,出现以下错误 -

com.google.cloud.spanner.SpannerException: PERMISSION_DENIED: com.google.api.gax.rpc.PermissionDeniedException: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Caller is missing IAM permission spanner.sessions.create on resource projects/test-project/instances/test-instance/databases/testdatabase.

如何为该用户提供在本地扳手模拟器上创建会话的能力?

4

2 回答 2

2

首先确保您已按照以下步骤正确配置本地环境。基本上确保所有与 Cloud Spanner 相关的 API 都已启用并运行以下命令:

gcloud auth application-default login

通过确保用于身份验证的帐户具有具有足够权限的角色,如访问控制文档中所述。Cloud Spanner 数据库管理员应该允许您发出查询,但如果您认为上述预定义角色授予的权限过多,您可以创建自定义角色。

官方文档建议创建一个单独的gcloud配置并确保您设置的SPANNER_EMULATOR_HOST环境变量是按以下方式设置的(在此处检查正确的信息:

export SPANNER_EMULATOR_HOST=localhost:9010
于 2021-02-08T12:55:37.400 回答
1

Cloud Spanner 模拟器没有实现任何 IAM,并且要求您在没有任何凭据的情况下连接到它,因此乍一看,此错误似乎表明:

  1. 毕竟你没有连接到模拟器,这个错误来自真正的 Cloud Spanner。
  2. 您已使用凭据连接到模拟器。

您介意分享创建连接的代码部分吗?

于 2021-02-08T12:49:53.863 回答