我的DynamoDB数据库中每个用户有大约300,000个事务。
如果这是最便宜的方式,我想以无服务器方式计算基于这些交易的税款。
我的思维过程是我应该使用AWS Step Functions来获取所有事务,将它们存储到Amazon S3中,然后使用AWS Step Functions迭代CSV文件中的每一行。问题是,一旦我在CSV中读取一行,我就必须将其存储在内存中,以便我可以将其用于以后的计算。如果这个Lambda函数没时间用完,那么我无法保存状态,所以这条路线不合理。
另一种成本很高的路线是在DynamoDB中拥有每个事务的两个副本,并在复制表上执行操作,保持原始数据不变。这个问题是DynamoDB表最终是一致的,并且可能存在我读取脏项的情况。
答案 0 :(得分:0)
无服务器是事件驱动处理的理想选择,但对于批量使用情况,使用EC2实例可能更容易。
Amazon EC2 t2.nano实例小于1c /小时,具有现货定价的t2.micro实例,并且它们是每秒定价。
答案 1 :(得分:0)
这里确实没有足够的细节来提出一个好的建议。例如,DynamoDB表中的数据是如何组织的?你多久计划一次这份工作?你需要多快完成这项工作?
你提到了价格所以我认为这是你最大的因素。
对于事件驱动的处理,Lambda往往最便宜。我们的想法是,对于任何EC2 / ECS事件驱动系统,您需要过量配置以处理流量峰值。过度配置的计算能力大部分时间处于空闲状态,但您仍需支付费用。在lambda的情况下,你需要为计算能力支付更多费用,但是你需要更少的钱来节省资金,因为你不需要过度供应。
批处理系统倾向于很好地适应EC2,因为它们通常在整个工作期间使用100%的计算能力。在作业结束时,您将关闭所有实例,并且不再为它们付费。此外,如果您使用现货定价,您可以真正降低计算能力的价格。