Вы можете экспортировать данные из 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 дни, что я бы порекомендовал вам:
Создайте свой первый дамп из таблицы с кодом выше.
Затем вы можете создать триггер DynamodB для лямбда-функции, которая будет получать все ваша таблица изменится (вставьте, обновите, удалите), а затем вы можете добавить данные в ваш CSV-файл. Код будет выглядеть примерно так:
def lambda_handler(event, context):
for record in event['Records']:
# get the changes here and save it
Поскольку вы будете получать только обновления таблицы, вам не нужно беспокоиться о 15-минутном выполнении из лямбды.
Вы можете прочитать больше о потоках DynamoDB и лямбде здесь: DynamoDB Streams и AWS Lambda Triggers
И если вы хотите работать с вашими данными, вы всегда можете создать aws клей или EMR кластер .