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,29 @@ 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 : 60000 ,
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+ } ) ) . then ( data => cb ( null , data ) ) . catch ( cb ) ;
6059}
6160
6261// return object with key and version_id
@@ -82,21 +81,19 @@ function listBucket(bucket, cb) {
8281 log . error ( 'error occured while listing' , { error : err , bucketName } ) ;
8382 return done ( err ) ;
8483 }
85- const keys = _getKeys ( data . Versions ) ;
84+ const keys = _getKeys ( data . Versions || [ ] ) ;
8685 return async . mapLimit ( keys , 10 , ( k , next ) => {
8786 const { Key, VersionId } = k ;
88- s3 . headObject (
89- { Bucket : bucketName , Key, VersionId } ,
90- ( err , res ) => {
91- if ( err ) {
92- return next ( err ) ;
93- }
94- if ( res . ReplicationStatus === 'FAILED' ) {
95- console . log ( { Key, ...res } ) ;
96- }
97- return next ( ) ;
98- } ,
99- ) ;
87+ s3 . send ( new HeadObjectCommand ( {
88+ Bucket : bucketName ,
89+ Key,
90+ VersionId,
91+ } ) ) . then ( res => {
92+ if ( res . ReplicationStatus === 'FAILED' ) {
93+ log . info ( 'failed replication object found' , { Key, ...res } ) ;
94+ }
95+ return next ( ) ;
96+ } ) . catch ( next ) ;
10097 } , err => {
10198 if ( err ) {
10299 return done ( err ) ;
0 commit comments