我正在寻找 AWS 上可用的最佳工具来安排将查询外部 HTTP 服务器的任务/作业。外部服务器使用 XML 文件进行回复,因此理想情况下,这些文件将存储在 S3 上,然后进行处理,并将完善的数据移至 Redshift。我正在研究 AWS Data Pipeline 和 Amazon EMR,但它们主要专注于在 AWS 内移动数据。有什么建议吗?谢谢
2 回答
Amazon Simple Workflow Service (SWF) 可能是一种解决方案。我确信 SWF 可以做到这一点,但它有点重。你需要更多的编程然后数据管道。
SWF 和数据管道之间的区别如下:
问:AWS Data Pipeline 与 Amazon Simple Workflow Service 有何不同?
虽然这两种服务都提供执行跟踪、重试和异常处理功能,以及运行任意操作的能力,但 AWS Data Pipeline 专门设计用于促进大多数数据驱动的工作流中常见的特定步骤——特别是在之后执行活动他们的输入数据符合特定的就绪标准,可以轻松地在不同的数据存储之间复制数据,并安排链式转换。这种高度具体的重点意味着可以快速创建其工作流定义,而无需任何代码或编程知识。 参考。
或者您可以只使用 SWF 创建一个计划,然后将流程逻辑放入 AWS Lambda。使用 SWF 触发 AWS Lambda 函数会更简单。
如果您使用的是 AWS DataPipeline,您可以编写一个 ShellCommandActivity(python 脚本或任何 cust exe),它可以从目标服务器获取 XML,将其转换为 CSV 并将其保存到 s3,然后您可以使用 RedshiftCopyActivity 来指示 Redshift 加载该位置的文件。