从 GCS 中删除文件:“gsutil -m rm”引发 CommandException:无法删除文件/对象
Posted
技术标签:
【中文标题】从 GCS 中删除文件:“gsutil -m rm”引发 CommandException:无法删除文件/对象【英文标题】:Removing files from GCS: "gsutil -m rm" throws CommandException: files/objects could not be removed 【发布时间】:2021-10-08 23:13:13 【问题描述】:gsutil -m rm gs://our_bucket/dir/subdir/*
...
Removing gs://our_bucket/dir/subdir/staging-000000000102.json...
Removing gs://our_bucket/dir/subdir/staging-000000000101.json...
CommandException: 103 files/objects could not be removed.
该命令能够找到包含 103 个 .JSON 文件的目录,并根据输出的 Removing gs://...
“尝试”删除它们。我们收到CommandException: 103 files/objects could not be removed.
的原因是什么?
也许这是一个权限问题,计算引擎无权删除我们 GCS 中的文件?
编辑:我们在 Airflow 项目的 /config
文件夹中有一个服务帐户 JSON,并且该服务帐户共享给具有 Storage Admin
权限的 IAM 用户。也许 /config 文件夹中的 JSON 不足以为整个 GCP 计算引擎分配权限?我特别困惑,因为这个服务器是能够从我们的 BQ 数据库中查询,并写入 GCS,但不能从 GCS 中删除...
【问题讨论】:
第一步是确定实例拥有的权限(角色)。使用这些详细信息编辑您的问题。 @JohnHanley 查看编辑。我开始认为服务帐户 JSON 在服务器上的某处 是不够的……我们还需要做其他事情来为服务器分配权限吗? 当我尝试使用gsutil cp
而不是 rm
时,我确实收到了 AccessDeniedException: 403 Insufficient Permission
错误
【参考方案1】:
此链接中的解决方案 - https://gist.github.com/ryderdamen/926518ddddd46dd4c8c2e4ef5167243d 正是我们所需要的:
停止实例 编辑设置 删除 gsutil 缓存【讨论】:
以上是关于从 GCS 中删除文件:“gsutil -m rm”引发 CommandException:无法删除文件/对象的主要内容,如果未能解决你的问题,请参考以下文章