in sensor/delete-sensors.js [28:87]
async function deleteSensors(){
try {
var iot = new AWS.Iot();
//iterate over all sensors and create policies, certs, and things
sensors.forEach(async (sensor) => {
//remove the iot core endpoint
sensor.settings.host = "";
//attach thing to certificate
await iot.detachThingPrincipal({thingName: sensor.settings.clientId, principal: sensor.settings.certificateArn}).promise();
//delete the thing
await iot.deleteThing({thingName: sensor.settings.clientId}).promise();
//detach policy from certificate
var policyName = 'Policy-' + sensor.settings.clientId;
await iot.detachPolicy({ policyName: policyName, target: sensor.settings.certificateArn}).promise();
//delete the IOT policy
result = await iot.deletePolicy({policyName: policyName}).promise()
//delete the certificates
var certificateId = sensor.settings.certificateArn.split('/')[1];
result = await iot.updateCertificate({certificateId:certificateId, newStatus:"INACTIVE"}).promise();
result = await iot.deleteCertificate({certificateId:certificateId, forceDelete:true}).promise();
sensor.settings.certificateArn = ""
//delete the certificate files
await fs.unlink(sensor.settings.keyPath);
sensor.settings.keyPath = "";
await fs.unlink(sensor.settings.certPath);
sensor.settings.certPath = "";
sensor.settings.caPath = "";
//save the updated settings file
let data = JSON.stringify(sensors, null, 2);
await fs.writeFile(SENSORS_FILE, data);
})
//display results
console.log('IoT Things removed: ' + sensors.length);
console.log('AWS Region: ' + REGION);
console.log('AWS Profile: ' + PROFILE);
sensors.forEach((sensor) => {
console.log('Thing Name: ' + sensor.settings.clientId);
})
}
catch (err) {
console.log('Error deleting sensors');
console.log(err.message);
}
}