【问题标题】:Exporting data from dynamo db to a csv file将数据从 dynamo db 导出到 csv 文件
【发布时间】:2020-02-04 17:02:16
【问题描述】:

我们希望将数据从 dynamo db 导出到文件。我们有大约 150,000 条记录,每条记录为 430 字节。这将是每周一次的定期活动。我们可以用 lambda 做到这一点吗? lambda 的最大执行时间是否可能为 15 分钟?

如果我无法从 UI 导出超过 100 条记录,是否有更好的选择使用 python 或通过 UI?

【问题讨论】:

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


【解决方案1】:

一个非常简单的选择是使用命令行界面工具

aws dynamodb scan --table-name YOURTABLE --output text > outputfile.txt

这会给你一个制表符分隔的输出。您可以将其作为 cronjob 运行以进行常规输出。

扫描只需要 15 分钟(可能只需几秒钟)。因此,如果您这样做,您无需担心 Lambda 超时。

【讨论】:

    【解决方案2】:

    您可以通过多种方式从 dynamodb 导出数据。

    最简单的方法是全表扫描:

    dynamodb = boto3.client('dynamodb')
    
    response = dynamodb.scan(
        TableName=your_table,
        Select='ALL_ATTRIBUTES')
    
    data = response['Items']
    
    while 'LastEvaluatedKey' in response:
        response = dynamodb.scan(
            TableName=your_table,
            Select='ALL_ATTRIBUTES',
            ExclusiveStartKey=response['LastEvaluatedKey'])
    
        data.extend(response['Items'])
    
    # save your data as csv here
    

    但如果你想每 x 天做一次,我建议你的是:

    使用上面的代码从您的表中创建您的第一个转储。

    然后,您可以为 lambda 函数创建一个 dynamodb 触发器,该函数将接收您的所有表更改(插入、更新、删除),然后您可以将数据附加到 csv 文件中。代码类似于:

    def lambda_handler(event, context):
        for record in event['Records']:
            # get the changes here and save it
    

    由于您只会收到表更新,因此您无需担心 lambda 的 15 分钟执行时间。

    您可以在此处阅读有关 dynamodb 流和 lambda 的更多信息:DynamoDB Streams and AWS Lambda Triggers

    如果您想处理您的数据,您可以随时创建aws glueEMR cluster

    【讨论】:

      【解决方案3】:

      我们使用 AWS lambda 解决了这个问题,使用最大可用内存 (3008 mb) 在 2.2 分钟内将 150,000 条记录(每条记录为 430 字节)处理为 csv 文件。为此创建了一个事件规则以定期运行。编写时间和大小,以便任何人都可以计算他们可以用 lambda 做多少

      【讨论】:

        【解决方案4】:

        您可以参考stackoverflow. 上的现有问题这个问题是关于将 dynamo db 表导出为 csv。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-09
          • 1970-01-01
          • 2019-01-11
          相关资源
          最近更新 更多