您可以通过多种方式从 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 glue 或EMR cluster。