试图使我的问题尽可能广泛:使用 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 存储桶会更好吗?从而颠覆了碎片清理的问题。
1 回答
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
有一个withTempDirectory
功能TextIO
应该允许您将临时存储桶设置为服务帐户具有更高权限的存储桶。
我相信这TextIO
会将文件放入tempLocation
您的管道中。您可以将tempLocation
管道设置在安全性不那么关键的存储桶中,并将结果写入安全存储桶。
如果这些替代方案中的任何一个有帮助,LMK。
添加回答
举报
0/150
提交
取消