-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathaws.js
More file actions
107 lines (100 loc) · 2.72 KB
/
aws.js
File metadata and controls
107 lines (100 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
const stream = require('stream');
const AWS = require('aws-sdk');
const fs = require('fs');
let accessKeyId, secretAccessKey;
let hasCacheSupport = false;
if (fs.existsSync('./config.json')){
console.log('reading secrets from config.json...');
accessKeyId = require('./config.json').accessKeyId;
secretAccessKey = require('./config.json').secretAccessKey;
if (accessKeyId && secretAccessKey) {
console.log('read secrets from config.json ok');
hasCacheSupport = true;
} else {
throw new Error('read secrets from config.json failed');
}
} else {
console.log('reading secrets from env...');
accessKeyId = process.env.accessKeyId;
secretAccessKey = process.env.secretAccessKey;
if (accessKeyId && secretAccessKey) {
console.log('read secrets from env ok');
hasCacheSupport = true;
} else {
console.warn('read secrets from env failed');
}
}
const awsConfig = new AWS.Config({
credentials: new AWS.Credentials({
accessKeyId,
secretAccessKey,
}),
region: 'us-west-1',
});
const s3 = new AWS.S3(awsConfig);
const getObject = (bucket, key) => {
return new Promise(async (resolve, reject) => {
const params = { Bucket: bucket, Key: key };
s3.getObject(params, (error, data) => {
if (error) {
reject(error)
}
else {
resolve(data)
}
});
})
}
const putObject = (bucket, key, data, type) => {
return new Promise(async (resolve, reject) => {
const params = { Body: data, Bucket: bucket, Key: key };
if (type) {
params['ContentType'] = type;
}
s3.putObject(params, (error, data) => {
if (error) {
reject(error)
}
else {
resolve(data)
}
});
})
}
const deleteObject = (bucket, key) => {
return new Promise(async (resolve, reject) => {
const params = { Bucket: bucket, Key: key };
s3.deleteObject(params, (error, data) => {
if (error) {
reject(error)
}
else {
console.log('got data', data);
resolve(data)
}
});
})
}
/* function uploadFromStream(bucket, key, type) {
const pass = new stream.PassThrough();
const params = { Bucket: bucket, Key: key, Body: pass };
if (type) {
params['ContentType'] = type;
}
s3.upload(params, function(err, data) {
console.log('emit done', !!err, !!data);
if (err) {
pass.emit('error', err);
} else {
pass.emit('done', data);
}
});
return pass;
} */
module.exports = {
hasCacheSupport,
getObject,
putObject,
deleteObject,
// uploadFromStream,
}