使用AWS Lambda在S3中更改CSV文件

时间:2018-03-11 01:11:31

标签: amazon-web-services amazon-s3 aws-lambda amazon-dynamodb

是否有办法为每个用户提供dynamodb行,在s3中使用csv文件进行备份。

然后使用流,当一行变异时,在csv文件中的s3中更改该行。

目前在那里的csv读者可以解析csv以便在lambda中使用。

虽然我想找到一个特定的行,由流给出,然后用另一行替换它,而不必将整个文件加载到内存中,因为它可能非常大。我想在s3上备份的原因是因为将来我需要对它进行批量处理并在短时间内从发电机读取300k文件,这是不可取的。

1 个答案:

答案 0 :(得分:3)

从S3读取数据,使用您喜欢的库解析为csv并更新,然后写回S3:

import io
import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket('mybucket')

with io.BytesIO() as data:
    bucket.download_fileobj('my_key', data)

    # parse csv data and update as necessary
    # then write back to s3

    bucket.upload_fileobj(data, 'my_key')

请注意,如果您希望这样做,则支持对象追加或更新 - 请参阅here。您只能阅读和覆盖。您可以在设计系统时考虑到这一点。