使用CLI gcloud命令时,我可以对数据库执行所有操作。然而,当我尝试从Go(从使用gcloud命令时所做的相同shell实例)做同样的事情时,我收到一条消息错误:
spanner: code = "PermissionDenied", desc = "Resource projects/todo/instances/todospanner/databases/tododb is missing IAM permission: spanner.sessions.create."
我试图运行的代码取自此处的示例:https://cloud.google.com/spanner/docs/getting-started/go/
我在扳手权限中找不到该权限(spanner.session.create)。我一直在玩我在以前用gcloud登录的帐户上设置我能找到的与扳手相关的所有权限。
我的GOOGLE_APPLICATION_CREDENTIAL已设置,我也尝试使用gcloud beta auth
。
此处列出并描述了Cloud Spanner IAM角色,包括权限spanner.session.create
:https://cloud.google.com/spanner/docs/iam#roles
请注意某些角色是如何特定于Person,而其他角色是特定于机器的(或特定于服务帐户)。
您需要指定从哪里连接或执行代码(Cloud Shell实例,在GCE上运行的VM,本地计算机或笔记本电脑)并确保将正确的角色分配给试图执行的人员或服务帐户代码和访问Cloud Spanner实例。
考虑这种情况:
[email protected]
帐户获得良好的认证,该帐户已授予roles/spanner.admin
角色,因此gcloud的一切正常[email protected]
服务帐户运行,并且无法访问Cloud Spanner,导致麻烦。有关服务帐户的更多信息,请访问:https://cloud.google.com/compute/docs/access/service-accounts