UNPKG

@cloud-copilot/iam-collect

Version:

Collect IAM information from AWS Accounts

64 lines 2.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resourceStatusWhereClause = void 0; exports.executeConfigQuery = executeConfigQuery; exports.parseConfigItem = parseConfigItem; const client_config_service_1 = require("@aws-sdk/client-config-service"); /** * Common utility functions for AWS Config-based command implementations */ /** * Execute AWS Config query and return all paginated results * * @param query The AWS Config query string * @param context The AWS Config client context * * @returns An array of results */ async function executeConfigQuery(query, context) { const { configClient } = context; const allResults = []; let nextToken = undefined; do { const result = await configClient.send(new client_config_service_1.SelectAggregateResourceConfigCommand({ ConfigurationAggregatorName: context.aggregatorName, Expression: query, MaxResults: 100, NextToken: nextToken })); // Add current page results to the collection if (result.Results) { allResults.push(...result.Results); } // Update nextToken for next iteration nextToken = result.NextToken; } while (nextToken); return allResults; } /** * Parse a Config result item into structured data * * @param configItemString The JSON string of the config item * @returns An object containing the parsed config item and its components */ function parseConfigItem(configItemString) { const configItem = JSON.parse(configItemString); let configuration = configItem.configuration; if (typeof configuration === 'string') { configuration = JSON.parse(configuration || '{}'); } let supplementaryConfiguration = configItem.supplementaryConfiguration; if (typeof supplementaryConfiguration === 'string') { supplementaryConfiguration = JSON.parse(supplementaryConfiguration || '{}'); } let tags = configItem.tags; if (typeof tags === 'string') { tags = JSON.parse(tags || '{}'); } return { configItem, configuration, supplementaryConfiguration, tags }; } /** * Where clause to filter for resources that are active/discovered */ exports.resourceStatusWhereClause = `configurationItemStatus IN ('ResourceDiscovered', 'OK')`; //# sourceMappingURL=awsConfigUtils.js.map