使用 AWS 以无服务器方式处理大量数据

Using AWS To Process Large Amounts Of Data With Serverless

我的 DynamoDB 数据库中每个用户大约有 300,000 个事务。

如果这是最便宜的方式,我想以无服务器方式根据这些交易计算税费。

我的想法是,我应该使用 AWS Step Functions 获取所有交易,将它们存储到 Amazon S3 中,然后使用 AWS Step Functions 迭代 CSV 文件中的每一行。问题是,一旦我在 CSV 中读取一行,我就必须将它存储在内存中,以便我可以在以后的计算中使用它。如果这个Lambda函数用完了,那我就没办法保存状态了,所以这个路由不靠谱。

另一种代价高昂的方法是在 DynamoDB 中为每个事务创建两个副本,并在副本上执行操作 Table,同时保持原始数据不变。这个问题是 DynamoDB table 最终是一致的,并且可能存在我读取脏项目的情况。

Serverless 是 event-driven 处理的理想选择,但对于您的批处理 use-case,使用 EC2 实例可能更容易。

Amazon EC2 t2.nano 实例低于 1c/小时,t2.micro 实例采用现货定价,它们是 per-second 定价。

这里真的没有足够的细节来提出一个好的建议。例如,您的 DynamoDB table 中的数据是如何组织的?您计划 运行 这份工作多久做一次?您需要多快完成工作?

你提到了价格,所以我认为这是对你来说最重要的因素。

Lambda 往往是 event-driven 处理成本最低的。这个想法是,对于任何 EC2/ECS 事件驱动的系统,您都需要提供一定数量的超额配置来处理流量高峰。过度配置的计算能力大部分时间处于闲置状态,但您仍然需要为此付费。在 lambda 的情况下,您为计算能力支付了更多的费用,但由于不需要过度配置,您可以通过减少需要来节省资金。

批处理系统往往非常适合 EC2,因为它们通常在整个作业期间使用 100% 的计算能力。在工作结束时,您关闭所有实例并且您不再为它们付费。此外,如果您使用现货定价,您确实可以降低计算能力的价格。