cloudformation-helpers/aws/s3.js
2016-03-04 12:02:15 -05:00

49 lines
1.2 KiB
JavaScript

var Promise = require('bluebird'),
AWS = require('aws-sdk'),
base = require('lib/base'),
helpers = require('lib/helpers'),
s3 = Promise.promisifyAll(new AWS.S3());
// Exposes the SNS.subscribe API method
function PutObject(event, context) {
base.Handler.call(this, event, context);
}
PutObject.prototype = Object.create(base.Handler.prototype);
PutObject.prototype.handleCreate = function() {
var p = this.event.ResourceProperties;
delete p.ServiceToken;
return s3.putObjectAsync(p);
}
PutObject.prototype.handleDelete = function(referenceData) {
var p = this.event.ResourceProperties;
return Promise.try(function() {
if (p.Key.endsWith("/")) {
s3.listObjectsAsync({
Bucket: p.Bucket,
Prefix: p.Key
})
.then(function(subObjects) {
return Promise
.map(
subObjects.Contents,
function(item) {
return s3.deleteObjectAsync({
Bucket: p.Bucket,
Key: item.Key
})
}
)
})
}
})
.then(function() {
return s3.deleteObjectAsync({
Bucket: p.Bucket,
Key: p.Key
});
});
}
exports.putObject = function(event, context) {
handler = new PutObject(event, context);
handler.handle();
}