UNPKG

@csermet/multiprovider

Version:

cloud-graph provider plugin for AWS used to fetch AWS cloud data.

42 lines (41 loc) 1.66 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const sdk_1 = __importDefault(require("@cloudgraph/sdk")); const notAuthorized = 'not authorized'; // part of the error string aws passes back for permissions errors const accessDenied = 'AccessDeniedException'; // an error code aws sometimes sends back for permissions errors const throttling = 'Throttling'; const { logger } = sdk_1.default; class AwsErrorLog { constructor(serviceName) { this.functionNames = {}; this.serviceName = serviceName; } generateAwsErrorLog({ functionName, err, silenceLogs, }) { if (err?.statusCode === 400) { err.retryable = true; } if (err?.code !== throttling) { // Verifies on function name map if (!this.functionNames[functionName]) { !silenceLogs && logger.warn(`There was a problem getting data for service ${this.serviceName}, CG encountered an error calling ${functionName}`); if (err?.message?.includes(notAuthorized) || err?.code === accessDenied) { logger.warn(err.message); } logger.debug(err); this.functionNames[functionName] = true; } } else { logger.debug(`Rate exceeded for ${this.serviceName}:${functionName}. Retrying...`); } } reset() { this.functionNames = {}; } } exports.default = AwsErrorLog;