cloud-report
Version:
Collects and analyzes cloud resources
67 lines (66 loc) • 3.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const base_1 = require("../../base");
class DynamoDBTablesBackupEnabledAnalyzer extends base_1.BaseAnalyzer {
analyze(params, fullReport) {
const allTablesBackupStatuses = params.tables_backup;
if (!allTablesBackupStatuses) {
return undefined;
}
const tables_backup_enabled = { type: types_1.CheckAnalysisType.Reliability };
tables_backup_enabled.what = "Are there any DynamoDB table without backup enabled?";
tables_backup_enabled.why = `DynamoDB can be accidentally deleted and
data can be lost when tables are without backup enabled`;
tables_backup_enabled.recommendation = "Recommended to enable backup for all production critical tables";
tables_backup_enabled.benchmark = ['all'];
const allRegionsAnalysis = {};
for (const region in allTablesBackupStatuses) {
const regionTablesBackupStatuses = allTablesBackupStatuses[region];
allRegionsAnalysis[region] = [];
for (const tableName in regionTablesBackupStatuses) {
const tableBackupStatus = regionTablesBackupStatuses[tableName];
const tableBackupEnableStatusAnalysis = {};
tableBackupEnableStatusAnalysis.resource = {
tableBackupStatus: tableBackupStatus.ContinuousBackupsStatus, tableName,
};
tableBackupEnableStatusAnalysis.resourceSummary = {
name: "Table",
value: tableName,
};
if (tableBackupStatus.ContinuousBackupsStatus) {
tableBackupEnableStatusAnalysis.severity = types_1.SeverityStatus.Good;
tableBackupEnableStatusAnalysis.message = "Backup already enabled";
}
else {
tableBackupEnableStatusAnalysis.severity = types_1.SeverityStatus.Failure;
tableBackupEnableStatusAnalysis.message = "Not enabled";
tableBackupEnableStatusAnalysis.action = "Enable table backup";
}
allRegionsAnalysis[region].push(tableBackupEnableStatusAnalysis);
const tablePointInTimeRecoveryStatusAnalysis = {};
tablePointInTimeRecoveryStatusAnalysis.resource = {
tableName,
tablePointInTimeRecoveryStatus: tableBackupStatus.PointInTimeRecoveryDescription.PointInTimeRecoveryStatus,
};
tablePointInTimeRecoveryStatusAnalysis.resourceSummary = {
name: "Table",
value: tableName,
};
if (tableBackupStatus.PointInTimeRecoveryDescription.PointInTimeRecoveryStatus) {
tablePointInTimeRecoveryStatusAnalysis.severity = types_1.SeverityStatus.Good;
tablePointInTimeRecoveryStatusAnalysis.message = "PointInTimeRecovery already enabled";
}
else {
tablePointInTimeRecoveryStatusAnalysis.severity = types_1.SeverityStatus.Warning;
tablePointInTimeRecoveryStatusAnalysis.message = "Not enabled";
tablePointInTimeRecoveryStatusAnalysis.action = "Enable table PointInTimeRecovery";
}
allRegionsAnalysis[region].push(tablePointInTimeRecoveryStatusAnalysis);
}
}
tables_backup_enabled.regions = allRegionsAnalysis;
return { tables_backup_enabled };
}
}
exports.DynamoDBTablesBackupEnabledAnalyzer = DynamoDBTablesBackupEnabledAnalyzer;