in source/services/dashboardHandler/lib/CWHelperAbstract.ts [46:93]
async putDashboard(startTime: string, dashboardName: string): Promise<void> {
let instances = [];
const tag = process.env.TAG_SCHEMA as string;
const workload = process.env.WORKLOAD as string;
try {
// validate tag
if (!this.isTagValid(tag)) throw new Error("invalid tag");
// validate instances
instances = await SSMHelper.getParameter(
process.env.SSM_PARAMETER as string
);
if (instances.length === 0) {
logger.debug({
label: "CWHelper/putDashboard",
message: "no instances found",
});
// if no instances found, delete dashboard
await this.deleteDashboard(dashboardName).catch(() => {
// do nothing
});
throw new Error("no instances found");
}
// generate widgets
const dashboard: IDashboard = { start: "", widgets: [] };
dashboard.start = startTime;
dashboard.widgets = this.factoryMethod().get(workload, instances, tag);
// put dashboard
const cw = new CloudWatch({
apiVersion: config.cw,
customUserAgent: config.customUserAgent,
});
await cw
.putDashboard({
DashboardBody: JSON.stringify(dashboard),
DashboardName: dashboardName,
})
.promise();
} catch (e) {
logger.error({
label: "CWHelper/putDashboard",
message: e,
});
throw new Error("dashboard put failed");
}
}