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
一个非常简单的选择是使用命令行界面工具
这将为您提供以制表符分隔的输出。您可以将其作为常规输出的cronjob运行
扫描不需要15分钟(可能只需要几秒钟)。所以如果你这样做的话,你就不必担心你的Lambda超时了
您可以通过多种方式从dynamodb导出数据
最简单的方法是全表扫描:
但如果你想每x天做一次,我建议你:
使用上面的代码从表中创建第一个转储
然后,您可以为lambda函数创建dynamodb触发器,该函数将接收所有表更改(插入、更新、删除),然后您可以将数据附加到csv文件中。代码类似于:
因为您只会收到表更新,所以不必担心lambda的15分钟执行时间
您可以在此处阅读有关dynamodb流和lambda的更多信息:DynamoDB Streams and AWS Lambda Triggers
如果你想处理你的数据,你可以创建一个aws glue或EMR cluster
伙计们,我们使用AWS lambda解决了这个问题,150000条记录(每条记录430字节)在2.2分钟内使用最大可用内存(3008 mb)处理成csv文件。为定期运行创建了一个事件规则。写时间和大小是为了让任何人都能计算出他们能用lambda做多少
相关问题 更多 >
编程相关推荐