@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
42 lines (41 loc) • 1.66 kB
JavaScript
;
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;