【发布时间】:2018-06-01 19:22:53
【问题描述】:
有没有办法让每个用户的 dynamodb 行,用 csv 文件在 s3 中备份。
然后使用流,当一行发生突变时,在 csv 文件的 s3 中更改该行。
目前存在的 csv 阅读器旨在解析 csv 以在 lambda 中使用。
而我想找到一个特定的行,由流给出,然后用另一行替换它,而不必将整个文件加载到内存中,因为它可能很大。我想要在 s3 上备份的原因是因为将来我需要对其进行批处理并在短时间内从 dynamo 读取 300k 文件,这不是可取的。
【问题讨论】:
-
您可以使用在 dynamodb 更新时触发的 lambda:docs.aws.amazon.com/amazondynamodb/latest/developerguide/…
-
@avigil 我遇到的问题是让 lambda 更新文件。作为从 s3 读取它的一种方式,找到该行并更新它。例如,我使用了 fast-csv,它只允许我解析行而不更新它。
-
您需要读入 S3 对象的内容,对其进行解析并根据需要进行更新,然后用更新后的版本覆盖该对象。请参阅
boto3文档以了解 S3put或upload_fileobj -
@avigil 我希望避免将整个文件读入 lambda,只更新一个文件
-
很遗憾,如果您使用的是 S3,您将无法做到这一点。考虑切换到数据库以轻松进行增量更新。
标签: amazon-web-services amazon-s3 aws-lambda amazon-dynamodb