我想归档dynamodb表,只保留数据90天。我在表格中有一个名为recorded_on的字段,可用于跟踪90天。看看Datapipeline,因为我们不需要它,所以它似乎与EMR有点过分。有更好的方法吗?
1. Cronjob that will continue to run everyday and match recorded_on + 90days > today's date and put those rows in s3 and delete those rows.
2. Separate cronjob to put data from s3 to redshift everyday.
答案 0 :(得分:0)
为什么您认为使用AWS数据管道过度杀伤?您可以使用自定义作业,但它需要额外的工作,管道会自动为您执行此操作。
它在幕后使用EMR集群的事实不应该是一个问题,因为它的细节无论如何都是从你身上抽象出来的。设置管道以将dynamoDb归档到s3非常容易。要删除超过90天的数据,您可以编写自定义脚本&使用数据管道ShellCommandActivity(http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-shellcommandactivity.html)来执行它。
以下是数据管道相对于CRON的一些好处:
它也很便宜,https://aws.amazon.com/datapipeline/pricing/。
此致 Dinesh Solanki
答案 1 :(得分:0)
您可以创建一个计划的Lambda函数,该函数每天(或以您想要的任何间隔)运行,执行查询并归档项目。
或者,如果您希望扩展和执行更好,您可以让Lambda函数执行查询,然后为需要归档的每个项目的SNS主题写一条消息,并在该SNS上具有另一个Lambda函数触发器主题并执行存档操作。
答案 2 :(得分:0)
我知道这是一个老问题,但是为了任何绊倒这个问题的人:
您现在可以使用DynamoDB TTL(生存时间)功能自动删除旧数据。然后,可以使用由该表上的流事件触发的lambda函数将已删除的记录存档到S3 - 或者您喜欢的任何位置。
有关如何在AWS博客上实现此目的的详细帖子:https://aws.amazon.com/blogs/database/automatically-archive-items-to-s3-using-dynamodb-time-to-live-with-aws-lambda-and-amazon-kinesis-firehose/