UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

67 lines (66 loc) 3.8 kB
"use strict"; 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;