试图使我的问题尽可能广泛:
使用 TextIO 将无界 PCollection 写入 GCS 存储桶时,同时使用具有最小权限原则且没有 GCS 删除访问权限的服务帐户,数据流中会出现以下错误:
Error trying to copy gs://[Temporary beam file] to gs://[JSON We expect]: {"code":403,"errors":[{"domain":"global","message":"[Service Account] does not have storage.objects.delete access to [JSONFile]","reason":"forbidden"}],"message":"[Service Account] does not have storage.objects.delete access to [JSON File]"}
考虑到我们不允许服务帐户对我们正在使用的存储桶进行删除访问,并且数据流管道正在尝试清理文件碎片,上述错误是有道理的。
然而,问题是,此时的最佳做法是提供对数据流服务帐户的删除访问权限并继续使用 TextIO?还是在我们想要摄取的 PCollection 上使用 DoFn 并使用 DoFn 使用 GCS API 将每个单独的元素逐步写入 GCS 存储桶会更好吗?从而颠覆了碎片清理的问题。
翻翻过去那场雪
相关分类