云作曲家:"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?
- 打开https://console.cloud.google.com/iam-admin/iam
- 找到您用于备份的服务帐户
- 将所有者角色添加到服务帐户
这不是很直观或合乎逻辑,因为没有 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 导入导出管理员
- 存储管理员
我用 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?
- 打开https://console.cloud.google.com/iam-admin/iam
- 找到您用于备份的服务帐户
- 将所有者角色添加到服务帐户
这不是很直观或合乎逻辑,因为没有 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 导入导出管理员
- 存储管理员