Skip to content

Commit 1adbac1

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

File tree

3 files changed

+59
-31
lines changed

3 files changed

+59
-31
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: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,32 @@ module.exports = [
7070
if (process.env.NODE_ENV !== 'development' || config.get('enableFileUpload') === 'true') {
7171
// get pre-signed Url
7272
req.log.debug('requesting presigned Url');
73-
httpClient.post(`${fileServiceUrl}uploadurl/`, {
74-
param: {
75-
filePath,
76-
contentType: data.contentType,
77-
isPublic: false,
73+
// httpClient.post(`${fileServiceUrl}uploadurl/`, {
74+
// param: {
75+
// filePath,
76+
// contentType: data.contentType,
77+
// isPublic: false,
78+
// },
79+
Promise.resolve({
80+
status: 200,
81+
data: {
82+
result: {
83+
status: 200,
84+
},
7885
},
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: 40 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,48 @@ _.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 destParam = {
292+
Bucket: destBucket,
293+
Key: destKey,
294+
295+
};
296+
297+
const data = await s3.getObject(sourceParam).promise();
298+
req.log.debug(`s3FileTransfer: getObject successfully: ${sourceBucket}/${sourceKey}`);
299+
destParam.Body = data.Body;
300+
301+
await s3.putObject(destParam).promise();
302+
req.log.debug(`s3FileTransfer: putObject successfully: ${destBucket}/${destKey}`);
303+
304+
await s3.deleteObject(sourceParam).promise();
305+
req.log.debug(`s3FileTransfer: deleteObject successfully: ${sourceBucket}/${sourceKey}`);
306+
307+
return { success: true };
308+
} catch (e) {
309+
req.log.debug(`s3FileTransfer: error: ${e.message}`);
310+
throw e;
311+
}
312+
},
294313

295314

296315
/**

0 commit comments

Comments
 (0)