Amazon web services 在摄入服务中使用step功能是一个好的选择吗?

Amazon web services 在摄入服务中使用step功能是一个好的选择吗?,amazon-web-services,lambda,aws-step-functions,Amazon Web Services,Lambda,Aws Step Functions,在前面,我已经用主从lambdas的概念创建了一个摄取服务。主lambda被调用以响应S3事件,它将从S3读取csv文件并创建块。 稍后,主lambda将调用多个从属lambda asynchronousy。每个从属lambas将处理这些数据块,并最终放入DynamoDB 在这里,我能够调用slave lambda的多个实例并实现并行 稍后,我阅读了Step Function(SF),它协调多个AWS服务以完成任务。现在,我正在考虑用SF重新设计我的摄入服务。借助映射状态,实现并行非常方便: 但

在前面,我已经用主从lambdas的概念创建了一个摄取服务。主lambda被调用以响应S3事件,它将从S3读取csv文件并创建块。 稍后,主lambda将调用多个从属lambda asynchronousy。每个从属lambas将处理这些数据块,并最终放入DynamoDB

在这里,我能够调用slave lambda的多个实例并实现并行

稍后,我阅读了Step Function(SF),它协调多个AWS服务以完成任务。现在,我正在考虑用SF重新设计我的摄入服务。借助映射状态,实现并行非常方便: 但我不确定它会有多大用处,因为这是一个新特性,而且是紧密耦合的


任何关于如何实现这一点或任何其他与SF相关的替代方法的建议首先,我喜欢您创建不同主/从lambda的方法:一个常见的错误是尝试创建一个独特的“递归”函数,该函数根据输入事件进行分块和加载。 一开始这似乎还可以,但可能会导致无限循环和昂贵的账单

TL;DR我认为你的方法没有错,我会坚持下去

我在这个问题上添加了两个无关的想法:

  • SFs获取更多值当您需要在加载到DynamoDB后执行某些操作时(例如,如果lambda出错,您想删除所有加载的项目,或者您想记录添加的项目总数),或者如果您想切换到串行方法(例如,在Dynamo表上备用一些WCU)

  • AWS数据管道是一种用于执行ETL的工具,支持从S3到DynamoDB的工作流。值得一看(在官方文档中可以找到一个)


  • 您构建服务的方式对我来说似乎很好,如果您满意的话,我不会浪费时间对其进行更改:请记住不同设计的好处,但避免在早期阶段过度优化。

    首先,我喜欢您创建不同主/从lambda的方法:一个常见的错误是尝试创建一个独特的“递归”函数,该函数根据输入事件执行分块和加载。 一开始这似乎还可以,但可能会导致无限循环和昂贵的账单

    TL;DR我认为你的方法没有错,我会坚持下去

    我在这个问题上添加了两个无关的想法:

  • SFs获取更多值当您需要在加载到DynamoDB后执行某些操作时(例如,如果lambda出错,您想删除所有加载的项目,或者您想记录添加的项目总数),或者如果您想切换到串行方法(例如,在Dynamo表上备用一些WCU)

  • AWS数据管道是一种用于执行ETL的工具,支持从S3到DynamoDB的工作流。值得一看(在官方文档中可以找到一个)

  • 您构建服务的方式对我来说似乎很好,如果您满意,我不会浪费时间更改它:请记住不同设计的好处,但避免在早期阶段过度优化