这是一个有点复杂的用例,因为与直接使用 Kiba 的开发人员相比,您会有额外的复杂性。不过是可以做到的!
我的建议是首先在您的 Rails 数据库中创建模型,该模型将描述作业的定义,以及您希望以适合您的方式向用户公开的每个源、转换和目标。
您必须安全地存储凭据(DB、S3)(这里很可能需要加密)。
然后,一旦您的模型就位,您将构建一个 UI,让用户可以编辑模型。
之后,您将使用与Sidekiq 兼容的 Kiba API,以便根据您的记录以编程方式创建作业。这是一个伪代码:
job_model = MyApp::Job.find(id)
kiba_job = Kiba.parse do
job_model.sources.each do |s|
source s.class_name, s.config
end
job_model.transforms.each do |t|
transform t.class_name, t.config
end
job_model.destinations.each do |d|
transform d.class_name, d.config
end
end
Kiba.run(kiba_job)
显然,您需要非常小心地只允许此处的一组受限类和配置(将允许的设置列入白名单,不要让您的用户提供任意输入)。
您还将实现一组预定义的源、转换和目标,这些源、转换和目标要提供给您的用户。
例如,为了实现您的 S3 组件,您可能需要查看这个 SO question。
希望这可以帮助!