Skip to content

Commit c7c46db

Browse files
committed
change aws s3 cli to aws-sdk
1 parent 54c4910 commit c7c46db

File tree

3 files changed

+55
-26
lines changed

3 files changed

+55
-26
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"amqplib": "^0.5.1",
3939
"analytics-node": "^2.1.1",
4040
"app-module-path": "^1.0.7",
41-
"aws-sdk": "^2.468.0",
41+
"aws-sdk": "^2.610.0",
4242
"axios": "^0.19.0",
4343
"bluebird": "^3.4.1",
4444
"body-parser": "^1.15.0",

src/routes/attachments/create.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,26 @@ module.exports = [
7676
contentType: data.contentType,
7777
isPublic: false,
7878
},
79+
// Promise.resolve({
80+
// status: 200,
81+
// data: {
82+
// result: {
83+
// status: 200,
84+
// },
85+
// },
7986
}).then((resp) => {
8087
req.log.debug('Presigned Url resp: ', JSON.stringify(resp.data, null, 2));
8188
if (resp.status !== 200 || resp.data.result.status !== 200) {
8289
return reject(new Error(resp.data.result.message));
8390
}
84-
// store deistination path & url
85-
const destinationUri = `s3://${config.get('attachmentsS3Bucket')}/${filePath}`;
86-
const sourceUri = `s3://${data.s3Bucket}/${data.filePath}`;
91+
const sourceBucket = data.s3Bucket;
92+
const sourceKey = data.filePath;
93+
const destBucket = config.get('attachmentsS3Bucket');
94+
const destKey = filePath;
95+
8796
req.log.debug('Moving s3 file');
8897
// transfer file
89-
return util.s3FileTransfer(req, sourceUri, destinationUri);
98+
return util.s3FileTransfer(req, sourceBucket, sourceKey, destBucket, destKey);
9099
}).then(() => accept()).catch(reject);
91100
} else {
92101
accept();

src/util.js

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import querystring from 'querystring';
1515
import config from 'config';
1616
import urlencode from 'urlencode';
1717
import elasticsearch from 'elasticsearch';
18+
import AWS from 'aws-sdk';
1819
// import jp from 'jsonpath';
1920
import Promise from 'bluebird';
2021
import models from './models';
21-
// import AWS from 'aws-sdk';
2222

2323
import {
2424
ADMIN_ROLES,
@@ -30,7 +30,6 @@ import {
3030
RESOURCES,
3131
} from './constants';
3232

33-
const exec = require('child_process').exec;
3433
const tcCoreLibAuth = require('tc-core-library-js').auth;
3534

3635
const m2m = tcCoreLibAuth.m2m(config);
@@ -269,28 +268,49 @@ _.assignIn(util, {
269268

270269
/**
271270
* Moves file from source to destination
272-
* @param {object} req request object
273-
* @param {object} source source object
274-
* @param {string} dest destination url
271+
* @param {object} req request object
272+
* @param {string} sourceBucket source bucket
273+
* @param {string} sourceKey source key
274+
* @param {string} destBucket destination bucket
275+
* @param {string} destKey destination key
275276
* @return {promise} promise
276277
*/
277-
s3FileTransfer: (req, source, dest) => new Promise((resolve, reject) => {
278-
const cmdStr = _.join([
279-
'aws s3 mv',
280-
`"${source}"`,
281-
`"${dest}"`,
282-
'--region us-east-1',
283-
], ' ');
284-
exec(cmdStr, (error, stdout, stderr) => {
285-
req.log.debug(`s3FileTransfer: stdout: ${stdout}`);
286-
req.log.debug(`s3FileTransfer: stderr: ${stderr}`);
287-
if (error !== null) {
288-
req.log.error(`exec error: ${error}`);
289-
return reject(error);
290-
}
291-
return resolve({ success: true });
278+
s3FileTransfer: async (req, sourceBucket, sourceKey, destBucket, destKey) => {
279+
const s3 = new AWS.S3({
280+
Region: 'us-east-1',
281+
apiVersion: '2006-03-01',
292282
});
293-
}),
283+
284+
285+
try {
286+
const sourceParam = {
287+
Bucket: sourceBucket,
288+
Key: sourceKey,
289+
};
290+
291+
const copyParam = {
292+
Bucket: destBucket,
293+
Key: destKey,
294+
CopySource: `${sourceBucket}/${sourceKey}`,
295+
};
296+
297+
await s3.copyObject(copyParam).promise();
298+
req.log.debug(`s3FileTransfer: copyObject successfully: ${sourceBucket}/${sourceKey}`);
299+
// expect delteObject not block the request
300+
setTimeout(async () => {
301+
try {
302+
await s3.deleteObject(sourceParam).promise();
303+
req.log.debug(`s3FileTransfer: deleteObject successfully: ${sourceBucket}/${sourceKey}`);
304+
} catch (e) {
305+
req.log.debug(`s3FileTransfer: deleteObject failed: ${sourceBucket}/${sourceKey} : ${e.message}`);
306+
}
307+
});
308+
return { success: true };
309+
} catch (e) {
310+
req.log.debug(`s3FileTransfer: error: ${e.message}`);
311+
throw e;
312+
}
313+
},
294314

295315

296316
/**

0 commit comments

Comments
 (0)