· 9 years ago · Jan 13, 2017, 01:00 AM
1'use strict';
2
3var util = require('util');
4var aws = require('aws-sdk');
5var async = require('async');
6
7var EXPIRATION_TIME_SECS = 60 * 60; //60 mins
8var BUCKET = 'myTestBucket';
9var OBJECT_PATH = 'path/where/the/object/is/store';
10
11var ACCESS_KEY='<access_key>';
12var SECRET_KEY='<secret_key>';
13
14function initialize(params, next) {
15 params.s3 = new aws.S3({
16 accessKeyId: ACCESS_KEY,
17 secretAccessKey: SECRET_KEY
18 });
19 util.log('s3 initialized');
20
21 return next();
22}
23
24function createBucket(params, next) {
25 var bucketOptions = {
26 Bucket: BUCKET
27 };
28
29 util.log('Creating bucket ' + bucketOptions.Bucket);
30 params.s3.createBucket(bucketOptions,
31 function(err) {
32 return next(err);
33 }
34 );
35}
36
37function generateGETUrl(params, next) {
38 util.log('Generating GET url for object');
39
40 var options = {
41 Bucket: BUCKET,
42 Key: OBJECT_PATH,
43 Expires: EXPIRATION_TIME_SECS
44 };
45
46 params.s3.getSignedUrl('getObject', options,
47 function(err, url) {
48 if (err)
49 return next(err);
50 params.accessors.get = url;
51 return next();
52 }
53 );
54}
55
56function generatePUTUrl(params, next) {
57 util.log('Generating PUT url for object');
58
59 var options = {
60 Bucket: BUCKET,
61 Key: OBJECT_PATH,
62 Expires: EXPIRATION_TIME_SECS
63 };
64
65 params.s3.getSignedUrl('putObject', options,
66 function(err, url) {
67 if (err)
68 return next(err);
69 params.accessors.put = url;
70 return next();
71 }
72 );
73}
74
75function generateDELETEUrl(params, next) {
76 util.log('Generating DELETE url for object');
77
78 var options = {
79 Bucket: BUCKET,
80 Key: OBJECT_PATH,
81 Expires: EXPIRATION_TIME_SECS
82 };
83
84 params.s3.getSignedUrl('deleteObject', options,
85 function(err, url) {
86 if (err)
87 return next(err);
88 params.accessors.delete = url;
89 return next();
90 }
91 );
92}
93
94function main(cb) {
95 var params = {};
96 params.accessors = {
97 get: '',
98 put: '',
99 delete: ''
100 };
101
102 async.series([
103 initialize.bind(null, params),
104 createBucket.bind(null, params),
105 generateGETUrl.bind(null, params),
106 generatePUTUrl.bind(null, params),
107 generateDELETEUrl.bind(null, params)
108 ], function (err) {
109 if (err) {
110 util.log(
111 util.format(
112 'Error generating accessor URLs for Bucket %s and path %s',
113 BUCKET, OBJECT_PATH));
114 util.log(util.inspect(err));
115 } else {
116 util.log('Accessors : ' + util.inspect(params.accessors));
117 }
118
119 cb();
120 });
121}
122
123main(function () {
124 util.log('Done');
125});