11const async = require ( 'async' ) ;
2- const AWS = require ( 'aws-sdk' ) ;
3- const { http } = require ( 'httpagent' ) ;
2+ const { S3Client, ListObjectVersionsCommand, HeadObjectCommand } = require ( '@aws-sdk/client-s3' ) ;
3+ const { NodeHttpHandler } = require ( '@aws-sdk/node-http-handler' ) ;
4+ const http = require ( 'http' ) ;
45
56const { Logger } = require ( 'werelogs' ) ;
67
@@ -32,31 +33,35 @@ if (!SECRET_KEY) {
3233 process . exit ( 1 ) ;
3334}
3435
35- const s3 = new AWS . S3 ( {
36- accessKeyId : ACCESS_KEY ,
37- secretAccessKey : SECRET_KEY ,
36+ const s3 = new S3Client ( {
3837 region : 'us-east-1' ,
39- sslEnabled : false ,
40- endpoint : ENDPOINT ,
41- s3ForcePathStyle : true ,
42- apiVersions : { s3 : '2006-03-01' } ,
43- signatureVersion : 'v4' ,
44- signatureCache : false ,
45- httpOptions : {
46- maxRetries : 0 ,
47- timeout : 0 ,
48- agent : new http . Agent ( { keepAlive : true } ) ,
38+ credentials : {
39+ accessKeyId : ACCESS_KEY ,
40+ secretAccessKey : SECRET_KEY ,
4941 } ,
42+ endpoint : ENDPOINT ,
43+ forcePathStyle : true ,
44+ tls : false ,
45+ requestHandler : new NodeHttpHandler ( {
46+ httpAgent : new http . Agent ( { keepAlive : true } ) ,
47+ requestTimeout : 0 ,
48+ } ) ,
5049} ) ;
5150
5251// list object versions
5352function _listObjectVersions ( bucket , VersionIdMarker , KeyMarker , cb ) {
54- s3 . listObjectVersions ( {
53+ s3 . send ( new ListObjectVersionsCommand ( {
5554 Bucket : bucket ,
5655 MaxKeys : LISTING_LIMIT ,
5756 VersionIdMarker,
5857 KeyMarker,
59- } , cb ) ;
58+ } ) )
59+ . then ( data => {
60+ cb ( null , data ) ;
61+ } )
62+ . catch ( err => {
63+ cb ( err ) ;
64+ } ) ;
6065}
6166
6267// return object with key and version_id
@@ -82,21 +87,23 @@ function listBucket(bucket, cb) {
8287 log . error ( 'error occured while listing' , { error : err , bucketName } ) ;
8388 return done ( err ) ;
8489 }
85- const keys = _getKeys ( data . Versions ) ;
90+ const keys = _getKeys ( data . Versions || [ ] ) ;
8691 return async . mapLimit ( keys , 10 , ( k , next ) => {
8792 const { Key, VersionId } = k ;
88- s3 . headObject (
89- { Bucket : bucketName , Key , VersionId } ,
90- ( err , res ) => {
91- if ( err ) {
92- return next ( err ) ;
93- }
93+ s3 . send ( new HeadObjectCommand ( {
94+ Bucket : bucketName ,
95+ Key ,
96+ VersionId ,
97+ } ) )
98+ . then ( res => {
9499 if ( res . ReplicationStatus === 'FAILED' ) {
95100 console . log ( { Key, ...res } ) ;
96101 }
97102 return next ( ) ;
98- } ,
99- ) ;
103+ } )
104+ . catch ( err => {
105+ return next ( err ) ;
106+ } ) ;
100107 } , err => {
101108 if ( err ) {
102109 return done ( err ) ;
0 commit comments