1- import datetime
1+ from datetime import datetime
22
33import boto3
44
5- MAX_BACKUPS = 3
5+ MAX_BACKUPS = 3 # maximum number of backups to retain
66
77dynamo = boto3 .client ('dynamodb' )
88
@@ -18,12 +18,12 @@ def lambda_handler(event, context):
1818
1919def create_backup (table_name ):
2020 print ("Backing up table:" , table_name )
21- backup_name = table_name + '-' + datetime .datetime . now ().strftime ('%Y%m%d%H%M%S' )
21+ backup_name = table_name + '-' + datetime .now ().strftime ('%Y%m%d%H%M%S' )
2222
2323 response = dynamo .create_backup (
2424 TableName = table_name , BackupName = backup_name )
2525
26- print (response )
26+ print (f"Created backup { response [ 'BackupDetails' ][ 'BackupName' ] } " )
2727
2828
2929def delete_old_backups (table_name ):
@@ -38,16 +38,25 @@ def delete_old_backups(table_name):
3838 print ("No stale backups. Exiting." )
3939 return
4040
41+ # Backups in date descending order (newest to oldest)
4142 sorted_list = sorted (backups ['BackupSummaries' ],
42- key = lambda k : k ['BackupCreationDateTime' ])
43+ key = lambda k : k ['BackupCreationDateTime' ], reverse = True )
4344
44- old_backups = sorted_list [:MAX_BACKUPS ]
45+ old_backups = sorted_list [MAX_BACKUPS :]
46+
47+ print (f'Old backups: { old_backups } ' )
4548
4649 for backup in old_backups :
4750 arn = backup ['BackupArn' ]
4851 print ("ARN to delete: " + arn )
4952 deleted_arn = dynamo .delete_backup (BackupArn = arn )
53+ backup_name = deleted_arn ['BackupDescription' ]['BackupDetails' ]['BackupName' ]
5054 status = deleted_arn ['BackupDescription' ]['BackupDetails' ]['BackupStatus' ]
51- print ("Status:" , status )
55+ print (f'BackupName: { backup_name } , Status: { status } ' )
5256
5357 return
58+
59+
60+ if __name__ == "__main__" :
61+ event = {"TableName" : "Movies" }
62+ lambda_handler (event , {})
0 commit comments