Skip to content

Instantly share code, notes, and snippets.

@peisenhower
Created July 16, 2018 13:00
Show Gist options
  • Save peisenhower/4fdfd35c287ba1804f47bc6eb1032d01 to your computer and use it in GitHub Desktop.
Save peisenhower/4fdfd35c287ba1804f47bc6eb1032d01 to your computer and use it in GitHub Desktop.
AWS script for batch deleting data out of dynamodb using dynamoose
#!/usr/bin/env node
const dynamoose = require('dynamoose');
dynamoose.setDefaults({create: false });
let schema = new dynamoose.Schema({
key: {
type: String,
required: true,
hashKey: true
},
range: {
type: String,
required: true,
rangeKey: true
},
other: String
},{
useNativeBooleans: true
});
var model = dynamoose.model('mytablename',
schema,
{
create: false,
update: false,
waitForActive: false,
waitForActiveTimeout: 3000
});
function deleteAll(list) {
list = list.map(x => {return {"key": x.key, "range": x.range};});
return new Promise((resolve, reject) => {
model
.batchDelete(
list
, (error) => {
if (error)
reject(error);
else{
resolve();
console.log("Batch Delete complete")
}
}
)
});
}
function scan() {
return new Promise ((resolve, reject) => {
Target
.scan()
.limit(200)
.exec((err, data)=>{
console.log(`error:${err}`);
console.log(`count:${data.length}`);
if (!err)
resolve(data);
else
reject(err);
});
});
}
try {
while(true)
{
console.log("RunId Query");
let result = await scan();
console.log(JSON.stringify(result.map(x => {return {"runId": x.runId};})));
if (result.length == 0) {
console.log("DoneZo!!");
return;
}
result = await deleteAll(result);
}
} catch (error) {
console.log(error);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment