云作曲家:"PERMISSION_DENIED: The caller does not have permission"

Cloud composer: "PERMISSION_DENIED: The caller does not have permission"

我用 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 相关权限,但它仍然不起作用。任何想法

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

其他调试想法:* 尝试在您的 Composer 环境中通过 ssh 连接到 Kubernetes worker 并 运行 命令。 *您的项目是否启用了 Firestore API?

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

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

不幸的是,我花了很长时间才弄明白。希望对大家有帮助!

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

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

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

与 Roy 的回答类似,我的问题是 gcloud 被设置为不同的项目。

检查设置到哪个项目

gcloud config list

列出您有权访问的项目

gcloud 项目列表

设置正确的项目

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

您需要先将您的项目设置为您的所有者 gcloud 配置设置项目项目 ID 您可以通过单击 gcloud 控制台找到您的项目 ID,它将出现在项目名称-somerandomnumbers

的弹出窗口中

我认为您需要 Cloud Datastore Import Export 访问权限。以下是根据当前 Google 云平台布局的步骤。

https://console.cloud.google.com > 左抽屉 > IAM & admin > 针对用户 - 编辑图标 > 添加另一个角色 > 数据存储 > 云数据存储导入和导出 > 保存

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

将所有者角色添加到服务帐户似乎对仅进行备份来说权限太大。

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

在 IAM 和管理中,确保您的@appspot.gserviceaccount.com 必须有权访问 3 件事:

  • 云功能管理员
  • Cloud Datastore 导入导出管理员
  • 存储管理员