【问题标题】:AWS Lambda vs AWS step functionAWS Lambda 与 AWS 步进函数
【发布时间】:2019-01-09 22:03:30
【问题描述】:

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

我正在考虑使用 AWS lambda 函数来拆分文件以及加载数据。我最近遇到了 AWS step function,它也可以根据我阅读的内容来达到目的。我不确定要选择哪一个,哪个在定价方面会更便宜。任何帮助表示赞赏。

提前致谢!

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda aws-step-functions


    【解决方案1】:

    Lambda 和 Step 函数就像楼层和通往每个楼层的台阶。你不能用另一个替换一个。

    Lambda 正在计算,步骤函数将它们带到所需的步骤。

    Youtube视频解释的很好:https://www.youtube.com/watch?v=Dh7h3lkpeP4

    再次类比,您可以在一个楼层拥有多个计算 (lambda),然后再将其传递到下一层。

    其中一个例子如下所示。

    用例: https://john.soban.ski/transcribe-customer-service-voicemails-and-alert-on-keywords.html

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      步骤函数非常适合协调涉及多个预定义步骤的工作流。它可以很好地完成并行任务和错误处理。它主要使用 Lambda 函数来执行每个任务。

      根据您的用例,步进函数听起来很合适。就定价而言,它在 Lambda 之上增加了非常小的额外费用。根据您的描述,我怀疑您是否会注意到额外费用。您需要根据您将使用的number of "state transitions" 进行评估。当然,您还必须为 Lambda 调用付费。

      【讨论】:

      • 感谢您的解释。在我最初的设计中,我想在 S3 中创建对象时触发 lambda。例如当一个大文件发布到 S3 存储桶时,它将触发 lambda,该 lambda 将该文件拆分为 n 个文件并将它们复制到 3 个不同的 s3 存储桶中。然后,只要将文件复制到该存储桶,就会触发与 3 个存储桶中的每一个关联的加载器 lambda 函数。因此,如果有 n 个文件,则第二步中的 lambda 调用总数将为 n*3 。现在,是否可以通过添加阶跃函数以更好的方式完成?
      • 如果不需要协调 lambda 函数并在它们之间进行通信,则不需要步进函数。在不了解所有细节的情况下,我无法针对您的特定用例进行说明。我建议您看一下步进函数的一些示例用例。如果您不需要它,请不要无益地增加复杂性。
      猜你喜欢
      • 2019-08-23
      • 2017-01-06
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      相关资源
      最近更新 更多