1
- import datetime
1
+ from datetime import datetime
2
2
3
3
import boto3
4
4
5
- MAX_BACKUPS = 3
5
+ MAX_BACKUPS = 3 # maximum number of backups to retain
6
6
7
7
dynamo = boto3 .client ('dynamodb' )
8
8
@@ -18,12 +18,12 @@ def lambda_handler(event, context):
18
18
19
19
def create_backup (table_name ):
20
20
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' )
22
22
23
23
response = dynamo .create_backup (
24
24
TableName = table_name , BackupName = backup_name )
25
25
26
- print (response )
26
+ print (f"Created backup { response [ 'BackupDetails' ][ 'BackupName' ] } " )
27
27
28
28
29
29
def delete_old_backups (table_name ):
@@ -38,16 +38,25 @@ def delete_old_backups(table_name):
38
38
print ("No stale backups. Exiting." )
39
39
return
40
40
41
+ # Backups in date descending order (newest to oldest)
41
42
sorted_list = sorted (backups ['BackupSummaries' ],
42
- key = lambda k : k ['BackupCreationDateTime' ])
43
+ key = lambda k : k ['BackupCreationDateTime' ], reverse = True )
43
44
44
- old_backups = sorted_list [:MAX_BACKUPS ]
45
+ old_backups = sorted_list [MAX_BACKUPS :]
46
+
47
+ print (f'Old backups: { old_backups } ' )
45
48
46
49
for backup in old_backups :
47
50
arn = backup ['BackupArn' ]
48
51
print ("ARN to delete: " + arn )
49
52
deleted_arn = dynamo .delete_backup (BackupArn = arn )
53
+ backup_name = deleted_arn ['BackupDescription' ]['BackupDetails' ]['BackupName' ]
50
54
status = deleted_arn ['BackupDescription' ]['BackupDetails' ]['BackupStatus' ]
51
- print ("Status:" , status )
55
+ print (f'BackupName: { backup_name } , Status: { status } ' )
52
56
53
57
return
58
+
59
+
60
+ if __name__ == "__main__" :
61
+ event = {"TableName" : "Movies" }
62
+ lambda_handler (event , {})
0 commit comments