serverless-s3-remover
Advanced tools
Comparing version
44
index.js
@@ -8,6 +8,6 @@ 'use strict'; | ||
class Remover { | ||
constructor (serverless, options) { | ||
constructor(serverless, options) { | ||
this.serverless = serverless; | ||
this.options = options; | ||
this.provider = this.serverless.getProvider('aws'); | ||
this.provider = this.serverless.getProvider('aws'); | ||
@@ -54,5 +54,9 @@ this.commands = { | ||
} | ||
return self.provider.request('S3', 'listObjectsV2', param, self.options.stage, self.options.region).then((result) => { | ||
return self.provider.request('S3', 'listObjectsV2', param).then((result) => { | ||
return new Promise((resolve) => { | ||
resolve({data: result, keys: keys.concat(result.Contents.map((item) => {return item.Key;}))}); | ||
resolve({ | ||
data: result, keys: keys.concat(result.Contents.map((item) => { | ||
return item.Key; | ||
})) | ||
}); | ||
}); | ||
@@ -67,10 +71,17 @@ }); | ||
const keys = result.keys; | ||
const objects = keys.map((item) => {return {Key: item};}); | ||
const param = { | ||
Bucket: bucket, | ||
Delete: { | ||
Objects: objects | ||
} | ||
}; | ||
return new Promise((resolve) => { resolve(param); }); | ||
const batched = []; | ||
for (let i = 0; i < keys.length; i += 1000) { | ||
const objects = keys.slice(i, i + 1000).map((item) => { | ||
return {Key: item}; | ||
}); | ||
batched.push({ | ||
Bucket: bucket, | ||
Delete: { | ||
Objects: objects | ||
} | ||
}); | ||
} | ||
return new Promise((resolve) => { | ||
resolve(batched); | ||
}); | ||
} | ||
@@ -81,4 +92,6 @@ }); | ||
}; | ||
const executeRemove = (param) => { | ||
return self.provider.request('S3', 'deleteObjects', param, self.options.stage, self.options.region); | ||
const executeRemove = (params) => { | ||
return Promise.all(params.map(param => { | ||
return self.provider.request('S3', 'deleteObjects', param); | ||
})); | ||
}; | ||
@@ -106,5 +119,6 @@ | ||
self.serverless.cli.consoleLog(`${messagePrefix}${chalk.yellow(message)}`); | ||
}).catch(() => { | ||
}).catch((err) => { | ||
const message = `Faild: ${b} may not be empty.`; | ||
self.log(message); | ||
self.log(err); | ||
self.serverless.cli.consoleLog(`${messagePrefix}${chalk.yellow(message)}`); | ||
@@ -111,0 +125,0 @@ })); |
{ | ||
"name": "serverless-s3-remover", | ||
"version": "0.5.0", | ||
"version": "0.6.0", | ||
"main": "index.js", | ||
@@ -5,0 +5,0 @@ "repository": "git@github.com:sinofseven/serverless-s3-remover.git", |
7918
3.48%154
10%