@cloud-copilot/iam-collect
Version:
Collect IAM information from AWS Accounts
39 lines • 1.46 kB
JavaScript
import { getStorageConfig } from '../config/config.js';
import { getIndexersForService } from '../indexing/indexMap.js';
import { runIndexJobs } from '../indexing/runIndexers.js';
import { defaultConcurrency } from '../jobs/util.js';
import { createStorageClient } from '../persistence/util.js';
import { allServices } from '../services.js';
export async function index(configs, partition, accountIds, regions, services, concurrency) {
const storageConfig = getStorageConfig(configs);
if (!storageConfig) {
throw new Error('No storage configuration found. Cannot index data.');
}
const storage = createStorageClient(storageConfig, partition);
if (accountIds.length === 0) {
accountIds = await storage.listAccountIds();
}
if (services.length === 0) {
services = allServices;
}
if (!concurrency || concurrency <= 0) {
concurrency = defaultConcurrency();
}
const indexers = services.reduce((allIndexers, service) => {
allIndexers.push(...getIndexersForService(service));
return allIndexers;
}, []);
const jobs = [];
for (const accountId of accountIds) {
for (const indexer of indexers) {
jobs.push({
indexer,
accountId,
regions: regions,
partition
});
}
}
await runIndexJobs(jobs, storageConfig, concurrency);
}
//# sourceMappingURL=index.js.map