AWS Lambda与AWS Step Functions的比较

38

我正在设计一个应用程序,其中输入是一个大的文本文件(大小范围从1-30 GB),每15分钟上传到S3存储桶。它将文件分成n个小文件,并将这些文件复制到3个不同的AWS区域中的3个不同的S3存储桶中。然后,3个加载器应用程序从各自的S3存储桶中读取这些n个文件,并将数据加载到相应的Aerospike集群中。

我考虑使用AWS Lambda函数来拆分文件以及加载数据。最近我发现了AWS Step Functions,根据我所了解的情况,它也可以实现这一目的。我不确定应该选择哪个,并且哪个在定价方面更便宜。任何帮助都将不胜感激。

提前致谢!

2个回答

50

3
当完全可以使用 Lambda 替代步函数时,-1 表示“您不能将一个替换为另一个”是错误的。在大多数情况下可能不是个好主意,但您可以在 Lambda 中构建状态机,如果您关心运行成本胜过其他任何事情,那么“可能”值得探索:https://www.readysetcloud.io/blog/allen.helton/lambda-vs-step-functions-breakdown/ - Mariano Desanze

25

步骤函数在协调涉及多个预定义步骤的工作流方面表现出色。它能够很好地处理并行任务和错误处理。它主要使用 Lambda 函数来执行每个任务。

根据您的用例,步骤函数听起来很适合。至于定价,它在 Lambdas 的基础上添加了非常小的额外费用。根据您的描述,我怀疑您甚至都不会注意到额外的成本。您需要根据您将使用的“状态转换”数量进行评估。当然,您还需要支付 Lambda 调用的费用。


谢谢您的解释。在我的初始设计中,我考虑在S3中创建对象时触发Lambda。例如,当一个大文件被发布到S3存储桶时,它将触发Lambda,将该文件分成n个文件,并将它们复制到3个不同的S3存储桶中。然后,与每个3个存储桶相关联的加载器Lambda函数将在将文件复制到该存储桶时触发。因此,如果有n个文件,则第二步中的Lambda调用总数将为n * 3。现在,通过添加步骤函数,是否可以以更好的方式完成这项工作? - dhamu
6
如果您不需要协调Lambda函数并在它们之间进行通信,则不需要使用Step Functions。我不能确定针对您的具体用例是否需要该服务,除非我了解所有细节。建议您查看一些Step Functions的示例用法。如果不需要,就不要为了没有好处而增加复杂性。 - Justin Howard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接