云作曲家:“ PERMISSION_DENIED:调用者没有权限”

时间:2018-09-09 21:42:30

标签: google-cloud-firestore google-cloud-composer

我用BashOperator实现了一些任务。使用“ gsutil rm”和“ gsutil cp”的用户可以正常工作。但是使用“ gcloud alpha firestore export”的人会产生此错误:

{bash_operator.py:101} INFO - ERROR: (gcloud.alpha.firestore.export) PERMISSION_DENIED: The caller does not have permission

此命令本身在gcloud shell中可以正常工作。我尝试为Composer使用的服务帐户提供一些与Firestore相关的权限,但是它仍然不起作用。任何想法

9 个答案:

答案 0 :(得分:3)

  1. 打开https://console.cloud.google.com/iam-admin/iam
  2. 找到用于备份的服务帐户
  3. 向服务帐户添加所有者角色

这不是真正的直观或逻辑,因为Firestore没有权限或角色。

不幸的是,我花了很长时间才弄清楚。希望对其他人有帮助!

答案 1 :(得分:1)

尝试使用所需的与Firestore相关的权限创建一个新的服务帐户,并在新创建的环境中使用该帐户。 https://cloud.google.com/composer/docs/how-to/access-control

其他调试思路:*尝试在Composer环境中ssh-入Kubernetes worker并运行命令。 *您的项目是否启用了Firestore API?

答案 2 :(得分:0)

可能是您没有特定项目的权限。

我遇到的错误是:PERMISSION_DENIED: Caller does not have required permission to use project project:random-id-11111.

解决问题的方法是先运行gcloud config set project 'the-right-project-id',然后运行实际的gcloud命令。

答案 3 :(得分:0)

类似于Roy的回答,对我来说,问题是gcloud被设置为另一个项目。

检查将其设置为哪个项目

gcloud config list

列出您有权访问的项目

gcloud项目列表

设置正确的项目

gcloud配置设置项目'foo-project'

答案 4 :(得分:0)

您需要首先将项目设置为所有者 gcloud config设置项目project-id 您可以通过单击gcloud控制台找到您的项目ID,该项目ID将出现在弹出的project-name-somerandomnumbers

中。

答案 5 :(得分:0)

我认为您需要Cloud Datastore导入导出访问。按照当前的当前Google Cloud平台布局,执行以下步骤。

https://console.cloud.google.com>左抽屉> IAM和管理员>针对用户-编辑图标>添加其他角色>数据存储> Cloud Datastore导入和导出>保存

答案 6 :(得分:0)

将firebase管理员角色授予服务正在使用的默认服务帐户。

将所有者角色添加到服务帐户似乎对于仅进行备份有太多特权。

答案 7 :(得分:0)

我今天被抓住了。问题是我已经在IAM设置中正确设置了服务帐户,但是没有意识到已经将邀请发送到了我需要接受的电子邮件地址。我接受邀请后立即工作。

答案 8 :(得分:0)

在IAM和管理员中,确保您的@ appspot.gserviceaccount.com必须具有3种权限:

  • Cloud Functions Admin
  • Cloud Datastore Import Export Admin
  • 存储管理员

enter image description here