Skip to content

Commit 5c0f048

Browse files
migrate sdk from v2 to v3 for listFailedObject
ISSUE : S3UTILS-202
1 parent a701052 commit 5c0f048

File tree

1 file changed

+27
-30
lines changed

1 file changed

+27
-30
lines changed

listFailedObjects.js

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const 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

56
const { 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
5352
function _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

Comments
 (0)