UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

37 lines (36 loc) 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("../../../utils"); const aws_1 = require("../../../utils/aws"); const base_1 = require("../../base"); class RolesCollector extends base_1.BaseCollector { collect() { return this.listAllRoles(); } async listAllRoles() { try { const iam = this.getClient("IAM", "us-east-1"); let fetchPending = true; let marker; let roles = []; while (fetchPending) { const iamRolesData = await iam.listRoles({ Marker: marker }).promise(); roles = roles.concat(iamRolesData.Roles); marker = iamRolesData.Marker; fetchPending = iamRolesData.IsTruncated === true; await utils_1.CommonUtil.wait(200); } roles.forEach((role) => { if (role.AssumeRolePolicyDocument) { const decodedPolicy = decodeURIComponent(role.AssumeRolePolicyDocument); role.AssumeRolePolicyDocument = JSON.parse(decodedPolicy); } }); return { roles }; } catch (error) { aws_1.AWSErrorHandler.handle(error); } } } exports.RolesCollector = RolesCollector;