@@ -38,29 +38,43 @@ const truncate4EverlandBucket = async () => {
38
38
39
39
if ( Contents ) {
40
40
const oldObjects = Contents . filter (
41
- ( object ) => new Date ( object . LastModified ! ) < dateDaysAgo
41
+ ( object ) =>
42
+ object . LastModified && new Date ( object . LastModified ) < dateDaysAgo
42
43
) ;
43
44
objectsToDelete = objectsToDelete . concat (
44
- oldObjects . map ( ( object ) => ( { Key : object . Key ! } ) )
45
+ oldObjects
46
+ . map ( ( object ) => ( { Key : object . Key ! } ) )
47
+ . filter ( ( obj ) => obj . Key )
45
48
) ;
46
49
}
47
50
48
51
ContinuationToken = IsTruncated ? NextContinuationToken : undefined ;
49
52
} while ( ContinuationToken ) ;
50
53
51
- console . log ( objectsToDelete . length ) ;
54
+ logger . info (
55
+ `[Cron] truncate4EverlandBucket - Found ${ objectsToDelete . length } objects older than ${ daysToSubtract } days.`
56
+ ) ;
52
57
53
58
if ( objectsToDelete . length > 0 ) {
54
- const deleteCommand = new DeleteObjectsCommand ( {
55
- Bucket,
56
- Delete : { Objects : objectsToDelete }
57
- } ) ;
59
+ const deleteBatchSize = 1000 ;
60
+
61
+ while ( objectsToDelete . length > 0 ) {
62
+ const batch = objectsToDelete . splice ( 0 , deleteBatchSize ) ;
63
+
64
+ const deleteCommand = new DeleteObjectsCommand ( {
65
+ Bucket,
66
+ Delete : { Objects : batch }
67
+ } ) ;
68
+
69
+ s3Client . send ( deleteCommand ) ;
70
+ logger . info (
71
+ `[Cron] truncate4EverlandBucket - Deleted ${ batch . length } objects in a batch.`
72
+ ) ;
73
+ }
58
74
59
- await s3Client . send ( deleteCommand ) ;
60
75
logger . info (
61
- `[Cron] truncate4EverlandBucket - Deleted ${ objectsToDelete . length } objects older than ${ daysToSubtract } days.`
76
+ `[Cron] truncate4EverlandBucket - Deleted all objects older than ${ daysToSubtract } days.`
62
77
) ;
63
-
64
78
return ;
65
79
}
66
80
0 commit comments