为了账号安全,请及时绑定邮箱和手机立即绑定

最佳实践 - 使用受限服务帐户将无界 PCollection 写入 GCS 存储桶

最佳实践 - 使用受限服务帐户将无界 PCollection 写入 GCS 存储桶

BIG阳 2022-07-20 15:57:36
试图使我的问题尽可能广泛:使用 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。


查看完整回答
反对 回复 2022-07-20
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信