作者 Jimy Matthews 和 Hemant Aggarwal,于 2024 年 8 月 22 日发布于 高级 分类下的 Amazon AppFlow、Amazon Managed Workflows for Apache Airflow (Amazon MWAA)、Amazon Redshift 和 客户解决方案。
在这篇文章中,我们讨论了 Kaplan 数据工程团队如何成功地从 Salesforce 向 Amazon Redshift 实现自动化的数据集成管道。我们的解决方案集成了多个 AWS 服务,包括 Amazon S3、Amazon AppFlow 和 Amazon MWAA,以创建一个强大而灵活的数据基础架构。

重要信息: 使用 Amazon MWAA 进行数据管道编排。 通过 Amazon AppFlow 实现从 Salesforce 到 Amazon S3 的数据迁移。 数据流实现同步和增量加载,减少人为干预,提高鲁棒性。
Kaplan Inc 为个人、教育机构和企业提供广泛的服务,支持学生和合作伙伴在教育和职业发展过程中满足多样化和不断变化的需求。Kaplan 的文化鼓励个人实现其目标,并致力于推动学习文化的发展,改变教育的现状。
Kaplan 的数据工程师利用 Amazon Redshift 和 Tableau 实现数据分析。基础设施为数百名内部分析师、数据科学家和学生前端专家提供了分析体验。数据工程团队的使命是尽可能简化并现代化数据集成平台。为此,他们选择了 AWS Cloud 及其服务。当前需从现有集成平台迁移多种类型的管道,这些管道具有不同的数据源,包括 Oracle、Microsoft SQL Server、MongoDB、Amazon DocumentDB兼容 MongoDB、API、SaaS 应用程序和 Google Sheets。截止目前,有超过 250 个对象从三个不同的 Salesforce 实例中提取。
在本文中,我们将讨论 Kaplan 数据工程团队如何实现从 Salesforce 应用程序到 Amazon Redshift 的数据集成。我们的解决方案使用 Amazon Simple Storage Service 作为数据湖,Amazon Redshift 作为数据仓库,采用 Amazon Managed Workflows for Apache AirflowAmazon MWAA作为编排工具,并使用 Tableau 作为展示层。
高层次的数据流开始于存储在 Amazon S3 的源数据,并通过各种 AWS 服务将其集成到 Amazon Redshift 中。以下是该架构的示意图。
小熊加速器vnpAmazon MWAA 是我们的主要数据管道编排工具,并与其他数据迁移工具整合。在寻找将数据从 Salesforce 迁移至 Amazon Redshift 的工具时,我们发现 Amazon AppFlow 非常适合我们的需求,能够直接从 Salesforce 向 Amazon Redshift 迁移数据。然而,在我们的架构中,我们决定将数据获取和存储过程分开,原因如下:
我们需要将数据存储在 Amazon S3数据湖中,作为数据基础架构的存档和集中位置。从未来的视角看,可能需要在将数据存储到 Amazon Redshift 之前进行转换。通过将数据存储在 Amazon S3 作为中间步骤,我们可以将转换逻辑集成作为单独模块,而不会显著影响整体数据流。Apache Airflow 是我们数据基础架构的集中点,其他管道使用不同工具如 AWS Glue构建。我们希望在不同数据源和目标之间保持一致的方法,而 Amazon AppFlow 只是我们整体基础架构的一部分。为了满足这些需求,我们将管道分为两部分: 使用 Amazon AppFlow 将数据从 Salesforce 迁移到 Amazon S3。 使用 Amazon MWAA 从 Amazon S3 加载数据到 Amazon Redshift。
这种方法使我们能够充分发挥每项服务的优势,同时保持数据基础架构的灵活性和可扩展性。Amazon AppFlow 可以独立处理管道的第一部分,因为它提供了如创建源和目标连接、调度数据流和创建过滤器等功能,还可以选择增量和全量加载类型。基于此,我们成功地将数据从 Salesforce 迁移到 S3 桶。随后,我们在 Amazon MWAA 中创建了一个 DAG,运行 Amazon Redshift COPY 命令将存储在 Amazon S3 的数据移动到 Amazon Redshift。
在这一过程中,我们面临以下挑战: 在进行增量数据时,需要手动更改 Amazon AppFlow 流中的过滤日期,这并不优雅。我们希望实现该日期过滤器更改的自动化。 管道的两个部分无法同步,因为没有办法知道管道的第一部分何时完成,以便第二部分可以开始。我们也希望自动化这些步骤。
为了自动化解决上述挑战,我们使用了 Amazon MWAA。我们创建了一个 DAG,作为 Amazon AppFlow 的控制中心。我们开发了一个 Airflow 操作符,可以使用 Amazon AppFlow API 执行各种功能,如创建、更新、删除和启动流程,并在 DAG 中使用该操作符。Amazon AppFlow 将连接数据存储在 AWS Secrets Manager 的管理密钥中,前缀为 appflow。存储密钥的成本包含在 Amazon AppFlow 收费中。通过这种方式,我们能够使用单个 DAG 运行完整的数据流。
完整的数据流包括以下步骤:1 使用 DAG 在 Amazon AppFlow 中创建流。2 使用 DAG 更新流中的新过滤日期。3 更新流后,DAG 启动该流。4 DAG 通过反复检查流的状态等待流完成。5 成功状态表明数据已从 Salesforce 迁移到 Amazon S3。6 数据流完成后,DAG 调用 COPY 命令将数据从 Amazon S3 复制到 Amazon Redshift。
这种方法帮助我们解决了上述问题,使数据管道变得更为稳健、易于理解、简单易用,无需人工干预,且错误发生的几率降低,因为我们从单一中心Amazon MWAA控制一切。Amazon AppFlow、Amazon S3 和 Amazon Redshift 都配置了加密以保护数据。同时,我们还进行了日志记录和监控,实施了审计机制以追踪数据流量和访问情况,使用了 AWS CloudTrail 和 Amazon CloudWatch。以下是我们采取的最终方法的高层次图解。
在本文中,我们分享了 Kaplan 的数据工程团队如何成功实施了从 Salesforce 到 Amazon Redshift 的稳健且自动化的数据集成管道,使用了 AWS 的服务,如 Amazon AppFlow、Amazon S3、Amazon Redshift 和 Amazon MWAA。通过创建自定义的 Airflow 操作符来控制 Amazon AppFlow 的功能,我们在单一 DAG 中无缝编排了整个数据流。这种方法不仅解决了增量数据加载和不同管道阶段间的同步问题,还使数据管道更具鲁棒性、方便维护且出错率较低。我们将为一个现有实例的新对象创建管道的时间减少到 50。这也帮助我们消除了使用增量列获取增量数据的复杂性,降低了每个表的成本 8090,相较于每次都进行全量加载。
凭借此现代数据集成平台,Kaplan 已为其分析师、数据科学家和面向学生的团队提供及时可靠的数据,使他们能够做出明智的决策,推动学习和成长文化。
尝试使用 Amazon MWAA 的 Airflow 及其他增强功能以改进您的数据编排管道。
有关 Amazon MWAA 的更多详细信息和代码示例,请参考 Amazon MWAA 用户指南 和 Amazon MWAA 示例 GitHub 存储库。
Hemant Aggarwal 是 Kaplan India Pvt Ltd 的高级数据工程师,致力于利用 AWS 开发和管理 ETL 管道及团队的流程/战略发展。
Naveen Kambhoji 是 Kaplan Inc 的高级经理,负责与 Kaplan 的数据工程师合作,使用 AWS 服务构建数据湖。他协调整个迁移过程,热衷于构建可扩展的分布式系统以高效管理云中的数据。工作之余,他喜欢与家人旅行,探索新地方。
Jimy Matthews 是一名 AWS 解决方案架构师,专注于人工智能/机器学习技术。Jimy 位于波士顿,帮助企业客户通过采用云计算转型,并协助他们构建高效可持续的解决方案。他热衷于家庭、汽车和综合格斗。
使用亚马逊转录和亚马逊基础平台的实时会议助手重点摘要本文介绍了一个名为实时会议助手LMA的解决方案,利用亚马逊转录、亚马逊基础平台和相关知识库如亚马逊 Q 业务提升会议体验。用户可以实时录制会议、自动生成会议摘要,并提取有价值的见解。该解决方案支持多种会议平台,并通过浏览器扩展程序进行操作。解决方案...
从 DC2 迁移到 RA3 的 Amazon Redshift 以应对数据量和分析需求的增长关键要点数据生成和分析需求持续增长,Dafiti 选择从 DC2 迁移到 RA3 节点以满足需求。Amazon Redshift 的新功能如独立存储和数据共享极大地提升了数据处理能力。迁移过程顺畅,整体性能提...