@cloud-copilot/iam-collect 0.1.52 → 0.1.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli.js +49 -2
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/download/download.d.ts +1 -1
- package/dist/cjs/download/download.d.ts.map +1 -1
- package/dist/cjs/download/download.js +26 -9
- package/dist/cjs/download/download.js.map +1 -1
- package/dist/cjs/index/index.d.ts +4 -0
- package/dist/cjs/index/index.d.ts.map +1 -0
- package/dist/cjs/index/index.js +42 -0
- package/dist/cjs/index/index.js.map +1 -0
- package/dist/cjs/indexing/indexMap.d.ts +10 -0
- package/dist/cjs/indexing/indexMap.d.ts.map +1 -0
- package/dist/cjs/indexing/indexMap.js +32 -0
- package/dist/cjs/indexing/indexMap.js.map +1 -0
- package/dist/cjs/indexing/indexer.d.ts +37 -0
- package/dist/cjs/indexing/indexer.d.ts.map +1 -0
- package/dist/cjs/indexing/indexer.js +3 -0
- package/dist/cjs/indexing/indexer.js.map +1 -0
- package/dist/cjs/indexing/indexers/accountOrgs.d.ts +3 -0
- package/dist/cjs/indexing/indexers/accountOrgs.d.ts.map +1 -0
- package/dist/cjs/indexing/indexers/accountOrgs.js +41 -0
- package/dist/cjs/indexing/indexers/accountOrgs.js.map +1 -0
- package/dist/cjs/indexing/indexers/apigateways.d.ts +3 -0
- package/dist/cjs/indexing/indexers/apigateways.d.ts.map +1 -0
- package/dist/cjs/indexing/indexers/apigateways.js +54 -0
- package/dist/cjs/indexing/indexers/apigateways.js.map +1 -0
- package/dist/cjs/indexing/indexers/buckets.d.ts +8 -0
- package/dist/cjs/indexing/indexers/buckets.d.ts.map +1 -0
- package/dist/cjs/indexing/indexers/buckets.js +40 -0
- package/dist/cjs/indexing/indexers/buckets.js.map +1 -0
- package/dist/cjs/indexing/indexers/vpcEndpoints.d.ts +3 -0
- package/dist/cjs/indexing/indexers/vpcEndpoints.d.ts.map +1 -0
- package/dist/cjs/indexing/indexers/vpcEndpoints.js +57 -0
- package/dist/cjs/indexing/indexers/vpcEndpoints.js.map +1 -0
- package/dist/cjs/indexing/runIndexers.d.ts +33 -0
- package/dist/cjs/indexing/runIndexers.d.ts.map +1 -0
- package/dist/cjs/indexing/runIndexers.js +86 -0
- package/dist/cjs/indexing/runIndexers.js.map +1 -0
- package/dist/cjs/jobs/jobQueue.d.ts.map +1 -0
- package/dist/cjs/jobs/jobQueue.js.map +1 -0
- package/dist/cjs/jobs/util.d.ts.map +1 -0
- package/dist/cjs/jobs/util.js.map +1 -0
- package/dist/cjs/persistence/AwsIamStore.d.ts +36 -0
- package/dist/cjs/persistence/AwsIamStore.d.ts.map +1 -1
- package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.d.ts +16 -0
- package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.d.ts.map +1 -0
- package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.js +70 -0
- package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.js.map +1 -0
- package/dist/cjs/persistence/PathBasedPersistenceAdapter.d.ts +38 -0
- package/dist/cjs/persistence/PathBasedPersistenceAdapter.d.ts.map +1 -0
- package/dist/cjs/persistence/PathBasedPersistenceAdapter.js +3 -0
- package/dist/cjs/persistence/PathBasedPersistenceAdapter.js.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.d.ts +29 -1
- package/dist/cjs/persistence/file/FileSystemAdapter.d.ts.map +1 -1
- package/dist/cjs/persistence/file/FileSystemAdapter.js +70 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.js.map +1 -1
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts +22 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -1
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.js +53 -1
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.js.map +1 -1
- package/dist/cjs/services.d.ts +7 -0
- package/dist/cjs/services.d.ts.map +1 -1
- package/dist/cjs/services.js +10 -0
- package/dist/cjs/services.js.map +1 -1
- package/dist/cjs/syncs/ec2/vpcEndpoints.d.ts.map +1 -1
- package/dist/cjs/syncs/ec2/vpcEndpoints.js +23 -2
- package/dist/cjs/syncs/ec2/vpcEndpoints.js.map +1 -1
- package/dist/cjs/syncs/organizations/organizations.d.ts.map +1 -1
- package/dist/cjs/syncs/organizations/organizations.js +18 -0
- package/dist/cjs/syncs/organizations/organizations.js.map +1 -1
- package/dist/cjs/syncs/s3/buckets.d.ts.map +1 -1
- package/dist/cjs/syncs/s3/buckets.js +4 -2
- package/dist/cjs/syncs/s3/buckets.js.map +1 -1
- package/dist/cjs/syncs/syncMap.d.ts.map +1 -1
- package/dist/cjs/syncs/syncMap.js +4 -12
- package/dist/cjs/syncs/syncMap.js.map +1 -1
- package/dist/esm/cli.js +49 -2
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/download/download.d.ts +1 -1
- package/dist/esm/download/download.d.ts.map +1 -1
- package/dist/esm/download/download.js +23 -6
- package/dist/esm/download/download.js.map +1 -1
- package/dist/esm/index/index.d.ts +4 -0
- package/dist/esm/index/index.d.ts.map +1 -0
- package/dist/esm/index/index.js +39 -0
- package/dist/esm/index/index.js.map +1 -0
- package/dist/esm/indexing/indexMap.d.ts +10 -0
- package/dist/esm/indexing/indexMap.d.ts.map +1 -0
- package/dist/esm/indexing/indexMap.js +29 -0
- package/dist/esm/indexing/indexMap.js.map +1 -0
- package/dist/esm/indexing/indexer.d.ts +37 -0
- package/dist/esm/indexing/indexer.d.ts.map +1 -0
- package/dist/esm/indexing/indexer.js +2 -0
- package/dist/esm/indexing/indexer.js.map +1 -0
- package/dist/esm/indexing/indexers/accountOrgs.d.ts +3 -0
- package/dist/esm/indexing/indexers/accountOrgs.d.ts.map +1 -0
- package/dist/esm/indexing/indexers/accountOrgs.js +38 -0
- package/dist/esm/indexing/indexers/accountOrgs.js.map +1 -0
- package/dist/esm/indexing/indexers/apigateways.d.ts +3 -0
- package/dist/esm/indexing/indexers/apigateways.d.ts.map +1 -0
- package/dist/esm/indexing/indexers/apigateways.js +51 -0
- package/dist/esm/indexing/indexers/apigateways.js.map +1 -0
- package/dist/esm/indexing/indexers/buckets.d.ts +8 -0
- package/dist/esm/indexing/indexers/buckets.d.ts.map +1 -0
- package/dist/esm/indexing/indexers/buckets.js +37 -0
- package/dist/esm/indexing/indexers/buckets.js.map +1 -0
- package/dist/esm/indexing/indexers/vpcEndpoints.d.ts +3 -0
- package/dist/esm/indexing/indexers/vpcEndpoints.d.ts.map +1 -0
- package/dist/esm/indexing/indexers/vpcEndpoints.js +54 -0
- package/dist/esm/indexing/indexers/vpcEndpoints.js.map +1 -0
- package/dist/esm/indexing/runIndexers.d.ts +33 -0
- package/dist/esm/indexing/runIndexers.d.ts.map +1 -0
- package/dist/esm/indexing/runIndexers.js +83 -0
- package/dist/esm/indexing/runIndexers.js.map +1 -0
- package/dist/esm/jobs/jobQueue.d.ts.map +1 -0
- package/dist/esm/jobs/jobQueue.js.map +1 -0
- package/dist/esm/jobs/util.d.ts.map +1 -0
- package/dist/esm/jobs/util.js.map +1 -0
- package/dist/esm/persistence/AwsIamStore.d.ts +36 -0
- package/dist/esm/persistence/AwsIamStore.d.ts.map +1 -1
- package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.d.ts +16 -0
- package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.d.ts.map +1 -0
- package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.js +68 -0
- package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.js.map +1 -0
- package/dist/esm/persistence/PathBasedPersistenceAdapter.d.ts +38 -0
- package/dist/esm/persistence/PathBasedPersistenceAdapter.d.ts.map +1 -0
- package/dist/esm/persistence/PathBasedPersistenceAdapter.js +2 -0
- package/dist/esm/persistence/PathBasedPersistenceAdapter.js.map +1 -0
- package/dist/esm/persistence/file/FileSystemAdapter.d.ts +29 -1
- package/dist/esm/persistence/file/FileSystemAdapter.d.ts.map +1 -1
- package/dist/esm/persistence/file/FileSystemAdapter.js +71 -1
- package/dist/esm/persistence/file/FileSystemAdapter.js.map +1 -1
- package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts +22 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -1
- package/dist/esm/persistence/file/FileSystemAwsIamStore.js +53 -1
- package/dist/esm/persistence/file/FileSystemAwsIamStore.js.map +1 -1
- package/dist/esm/services.d.ts +7 -0
- package/dist/esm/services.d.ts.map +1 -1
- package/dist/esm/services.js +9 -0
- package/dist/esm/services.js.map +1 -1
- package/dist/esm/syncs/ec2/vpcEndpoints.d.ts.map +1 -1
- package/dist/esm/syncs/ec2/vpcEndpoints.js +23 -2
- package/dist/esm/syncs/ec2/vpcEndpoints.js.map +1 -1
- package/dist/esm/syncs/organizations/organizations.d.ts.map +1 -1
- package/dist/esm/syncs/organizations/organizations.js +18 -0
- package/dist/esm/syncs/organizations/organizations.js.map +1 -1
- package/dist/esm/syncs/s3/buckets.d.ts.map +1 -1
- package/dist/esm/syncs/s3/buckets.js +4 -2
- package/dist/esm/syncs/s3/buckets.js.map +1 -1
- package/dist/esm/syncs/syncMap.d.ts.map +1 -1
- package/dist/esm/syncs/syncMap.js +1 -9
- package/dist/esm/syncs/syncMap.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/download/jobQueue.d.ts.map +0 -1
- package/dist/cjs/download/jobQueue.js.map +0 -1
- package/dist/cjs/download/util.d.ts.map +0 -1
- package/dist/cjs/download/util.js.map +0 -1
- package/dist/esm/download/jobQueue.d.ts.map +0 -1
- package/dist/esm/download/jobQueue.js.map +0 -1
- package/dist/esm/download/util.d.ts.map +0 -1
- package/dist/esm/download/util.js.map +0 -1
- /package/dist/cjs/{download → jobs}/jobQueue.d.ts +0 -0
- /package/dist/cjs/{download → jobs}/jobQueue.js +0 -0
- /package/dist/cjs/{download → jobs}/util.d.ts +0 -0
- /package/dist/cjs/{download → jobs}/util.js +0 -0
- /package/dist/esm/{download → jobs}/jobQueue.d.ts +0 -0
- /package/dist/esm/{download → jobs}/jobQueue.js +0 -0
- /package/dist/esm/{download → jobs}/util.d.ts +0 -0
- /package/dist/esm/{download → jobs}/util.js +0 -0
package/dist/cjs/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ const createConfigFile_js_1 = require("./config/createConfigFile.js");
|
|
|
7
7
|
const defaultConfig_js_1 = require("./config/defaultConfig.js");
|
|
8
8
|
const packageVersion_js_1 = require("./config/packageVersion.js");
|
|
9
9
|
const download_js_1 = require("./download/download.js");
|
|
10
|
+
const index_js_1 = require("./index/index.js");
|
|
10
11
|
const log_js_1 = require("./utils/log.js");
|
|
11
12
|
const main = async () => {
|
|
12
13
|
const version = await (0, packageVersion_js_1.iamCollectVersion)();
|
|
@@ -16,7 +17,7 @@ const main = async () => {
|
|
|
16
17
|
options: {}
|
|
17
18
|
},
|
|
18
19
|
download: {
|
|
19
|
-
description: 'Download IAM data',
|
|
20
|
+
description: 'Download IAM data and update indexes',
|
|
20
21
|
options: {
|
|
21
22
|
configFiles: {
|
|
22
23
|
type: 'string',
|
|
@@ -42,6 +43,46 @@ const main = async () => {
|
|
|
42
43
|
type: 'number',
|
|
43
44
|
description: 'The maximum number of concurrent downloads to allow. Defaults based on your system CPUs',
|
|
44
45
|
values: 'single'
|
|
46
|
+
},
|
|
47
|
+
noIndex: {
|
|
48
|
+
type: 'boolean',
|
|
49
|
+
description: 'Skip refreshing the indexes after downloading',
|
|
50
|
+
character: 'n'
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
index: {
|
|
55
|
+
description: 'Refresh the IAM data indexes',
|
|
56
|
+
options: {
|
|
57
|
+
configFiles: {
|
|
58
|
+
type: 'string',
|
|
59
|
+
description: 'The configuration files to use',
|
|
60
|
+
values: 'multiple'
|
|
61
|
+
},
|
|
62
|
+
partition: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'The partition to refresh index data for. Defaults to aws',
|
|
65
|
+
values: 'single'
|
|
66
|
+
},
|
|
67
|
+
accounts: {
|
|
68
|
+
type: 'string',
|
|
69
|
+
description: 'The account IDs to refresh index data for',
|
|
70
|
+
values: 'multiple'
|
|
71
|
+
},
|
|
72
|
+
regions: {
|
|
73
|
+
type: 'string',
|
|
74
|
+
description: 'The regions to refresh index data for',
|
|
75
|
+
values: 'multiple'
|
|
76
|
+
},
|
|
77
|
+
services: {
|
|
78
|
+
type: 'string',
|
|
79
|
+
description: 'The services to refresh index data for',
|
|
80
|
+
values: 'multiple'
|
|
81
|
+
},
|
|
82
|
+
concurrency: {
|
|
83
|
+
type: 'number',
|
|
84
|
+
description: 'The maximum number of concurrent indexers to run. Defaults based on your system CPUs',
|
|
85
|
+
values: 'single'
|
|
45
86
|
}
|
|
46
87
|
}
|
|
47
88
|
}
|
|
@@ -73,7 +114,13 @@ const main = async () => {
|
|
|
73
114
|
const defaultConfig = './iam-collect.jsonc';
|
|
74
115
|
const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
|
|
75
116
|
const configs = (0, configFile_js_1.loadConfigFiles)(configFiles);
|
|
76
|
-
await (0, download_js_1.downloadData)(configs, cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency);
|
|
117
|
+
await (0, download_js_1.downloadData)(configs, cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency, cli.args.noIndex);
|
|
118
|
+
}
|
|
119
|
+
else if (cli.subcommand === 'index') {
|
|
120
|
+
const defaultConfig = './iam-collect.jsonc';
|
|
121
|
+
const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
|
|
122
|
+
const configs = (0, configFile_js_1.loadConfigFiles)(configFiles);
|
|
123
|
+
await (0, index_js_1.index)(configs, cli.args.partition || 'aws', cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency);
|
|
77
124
|
}
|
|
78
125
|
};
|
|
79
126
|
main()
|
package/dist/cjs/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;AAEA,4CAAsD;AACtD,0DAAwD;AACxD,sEAAyE;AACzE,gEAA+D;AAC/D,kEAA8D;AAC9D,wDAAqD;AACrD,2CAAuD;AAEvD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,MAAM,OAAO,GAAG,MAAM,IAAA,qCAAiB,GAAE,CAAA;IACzC,MAAM,GAAG,GAAG,IAAA,uBAAiB,EAC3B,aAAa,EACb;QACE,IAAI,EAAE;YACJ,WAAW,EAAE,+CAA+C;YAC5D,OAAO,EAAE,EAAE;SACZ;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { TopLevelConfig } from '../config/config.js';
|
|
2
|
-
export declare function downloadData(configs: TopLevelConfig[], accountIds: string[], regions: string[], services: string[], concurrency: number | undefined): Promise<void>;
|
|
2
|
+
export declare function downloadData(configs: TopLevelConfig[], accountIds: string[], regions: string[], services: string[], concurrency: number | undefined, skipIndex: boolean): Promise<void>;
|
|
3
3
|
//# sourceMappingURL=download.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,cAAc,EACf,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,cAAc,EACf,MAAM,qBAAqB,CAAA;AAY5B,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,IAAI,CAAC,CAwJf"}
|
|
@@ -5,16 +5,18 @@ const auth_js_1 = require("../aws/auth.js");
|
|
|
5
5
|
const coreAuth_js_1 = require("../aws/coreAuth.js");
|
|
6
6
|
const config_js_1 = require("../config/config.js");
|
|
7
7
|
const partitionDefaults_js_1 = require("../config/partitionDefaults.js");
|
|
8
|
-
const
|
|
8
|
+
const indexMap_js_1 = require("../indexing/indexMap.js");
|
|
9
|
+
const runIndexers_js_1 = require("../indexing/runIndexers.js");
|
|
10
|
+
const jobQueue_js_1 = require("../jobs/jobQueue.js");
|
|
11
|
+
const util_js_1 = require("../jobs/util.js");
|
|
12
|
+
const util_js_2 = require("../persistence/util.js");
|
|
9
13
|
const regions_js_1 = require("../regions.js");
|
|
10
14
|
const services_js_1 = require("../services.js");
|
|
11
15
|
const syncMap_js_1 = require("../syncs/syncMap.js");
|
|
12
16
|
const log_js_1 = require("../utils/log.js");
|
|
13
|
-
|
|
14
|
-
const util_js_2 = require("./util.js");
|
|
15
|
-
async function downloadData(configs, accountIds, regions, services, concurrency) {
|
|
17
|
+
async function downloadData(configs, accountIds, regions, services, concurrency, skipIndex) {
|
|
16
18
|
if (concurrency === undefined || concurrency <= 0) {
|
|
17
|
-
concurrency = (0,
|
|
19
|
+
concurrency = (0, util_js_1.defaultConcurrency)();
|
|
18
20
|
}
|
|
19
21
|
if (accountIds.length === 0) {
|
|
20
22
|
const defaultAuthConfig = (0, config_js_1.getDefaultAuthConfig)(configs);
|
|
@@ -28,6 +30,7 @@ async function downloadData(configs, accountIds, regions, services, concurrency)
|
|
|
28
30
|
throw new Error('No storage configuration found. Cannot download data.');
|
|
29
31
|
}
|
|
30
32
|
const jobs = [];
|
|
33
|
+
const indexJobs = [];
|
|
31
34
|
for (const accountId of accountIds) {
|
|
32
35
|
log_js_1.log.info('Queuing downloads for account', { accountId });
|
|
33
36
|
const authForAccount = (0, config_js_1.getAccountAuthConfig)(accountId, configs);
|
|
@@ -38,7 +41,7 @@ async function downloadData(configs, accountIds, regions, services, concurrency)
|
|
|
38
41
|
if (regions.length === 0) {
|
|
39
42
|
regions = await (0, regions_js_1.getEnabledRegions)(credentials);
|
|
40
43
|
}
|
|
41
|
-
const storage = (0,
|
|
44
|
+
const storage = (0, util_js_2.createStorageClient)(storageConfig, partition);
|
|
42
45
|
if (services.length === 0) {
|
|
43
46
|
services = services_js_1.allServices;
|
|
44
47
|
}
|
|
@@ -95,18 +98,32 @@ async function downloadData(configs, accountIds, regions, services, concurrency)
|
|
|
95
98
|
});
|
|
96
99
|
}
|
|
97
100
|
}
|
|
101
|
+
const indexers = (0, indexMap_js_1.getIndexersForService)(service);
|
|
102
|
+
for (const indexer of indexers) {
|
|
103
|
+
indexJobs.push({
|
|
104
|
+
indexer,
|
|
105
|
+
partition,
|
|
106
|
+
accountId,
|
|
107
|
+
regions: serviceRegions
|
|
108
|
+
});
|
|
109
|
+
}
|
|
98
110
|
}
|
|
99
111
|
}
|
|
100
112
|
log_js_1.log.debug('Starting downloads', { jobs: jobs.length, concurrency });
|
|
101
113
|
const results = await (0, jobQueue_js_1.runJobs)(jobs, concurrency);
|
|
102
114
|
const failedJobs = results.filter((r) => r.status === 'rejected');
|
|
103
115
|
if (failedJobs.length > 0) {
|
|
104
|
-
log_js_1.log.error('Some
|
|
116
|
+
log_js_1.log.error('Some downloads failed', { failedJobs: failedJobs.length });
|
|
105
117
|
for (const failedJob of failedJobs) {
|
|
106
|
-
log_js_1.log.error('
|
|
118
|
+
log_js_1.log.error('Download failed', failedJob.reason, failedJob.properties);
|
|
107
119
|
}
|
|
108
|
-
throw new Error(`Failed to download
|
|
120
|
+
throw new Error(`Failed to download some data. See logs for details.`);
|
|
109
121
|
}
|
|
110
122
|
log_js_1.log.info('Finished downloads', { jobs: jobs.length });
|
|
123
|
+
if (skipIndex) {
|
|
124
|
+
log_js_1.log.info('Skipping indexing');
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
await (0, runIndexers_js_1.runIndexJobs)(indexJobs, storageConfig, concurrency);
|
|
111
128
|
}
|
|
112
129
|
//# sourceMappingURL=download.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TopLevelConfig } from '../config/config.js';
|
|
2
|
+
import { AwsService } from '../services.js';
|
|
3
|
+
export declare function index(configs: TopLevelConfig[], partition: string, accountIds: string[], regions: string[], services: AwsService[], concurrency: number | undefined): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAMtE,OAAO,EAAe,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAExD,wBAAsB,KAAK,CACzB,OAAO,EAAE,cAAc,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,UAAU,EAAE,EACtB,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.index = index;
|
|
4
|
+
const config_js_1 = require("../config/config.js");
|
|
5
|
+
const indexMap_js_1 = require("../indexing/indexMap.js");
|
|
6
|
+
const runIndexers_js_1 = require("../indexing/runIndexers.js");
|
|
7
|
+
const util_js_1 = require("../jobs/util.js");
|
|
8
|
+
const util_js_2 = require("../persistence/util.js");
|
|
9
|
+
const services_js_1 = require("../services.js");
|
|
10
|
+
async function index(configs, partition, accountIds, regions, services, concurrency) {
|
|
11
|
+
const storageConfig = (0, config_js_1.getStorageConfig)(configs);
|
|
12
|
+
if (!storageConfig) {
|
|
13
|
+
throw new Error('No storage configuration found. Cannot index data.');
|
|
14
|
+
}
|
|
15
|
+
const storage = (0, util_js_2.createStorageClient)(storageConfig, partition);
|
|
16
|
+
if (accountIds.length === 0) {
|
|
17
|
+
accountIds = await storage.listAccountIds();
|
|
18
|
+
}
|
|
19
|
+
if (services.length === 0) {
|
|
20
|
+
services = services_js_1.allServices;
|
|
21
|
+
}
|
|
22
|
+
if (!concurrency || concurrency <= 0) {
|
|
23
|
+
concurrency = (0, util_js_1.defaultConcurrency)();
|
|
24
|
+
}
|
|
25
|
+
const indexers = services.reduce((allIndexers, service) => {
|
|
26
|
+
allIndexers.push(...(0, indexMap_js_1.getIndexersForService)(service));
|
|
27
|
+
return allIndexers;
|
|
28
|
+
}, []);
|
|
29
|
+
const jobs = [];
|
|
30
|
+
for (const accountId of accountIds) {
|
|
31
|
+
for (const indexer of indexers) {
|
|
32
|
+
jobs.push({
|
|
33
|
+
indexer,
|
|
34
|
+
accountId,
|
|
35
|
+
regions: regions,
|
|
36
|
+
partition
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
await (0, runIndexers_js_1.runIndexJobs)(jobs, storageConfig, concurrency);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index/index.ts"],"names":[],"mappings":";;AAQA,sBA4CC;AApDD,mDAAsE;AAEtE,yDAA+D;AAC/D,+DAAmE;AACnE,6CAAoD;AACpD,oDAA4D;AAC5D,gDAAwD;AAEjD,KAAK,UAAU,KAAK,CACzB,OAAyB,EACzB,SAAiB,EACjB,UAAoB,EACpB,OAAiB,EACjB,QAAsB,EACtB,WAA+B;IAE/B,MAAM,aAAa,GAAG,IAAA,4BAAgB,EAAC,OAAO,CAAC,CAAA;IAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,6BAAmB,EAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IAE7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,UAAU,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;IAC7C,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,QAAQ,GAAG,yBAAsC,CAAA;IACnD,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrC,WAAW,GAAG,IAAA,4BAAkB,GAAE,CAAA;IACpC,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE;QACxD,WAAW,CAAC,IAAI,CAAC,GAAG,IAAA,mCAAqB,EAAC,OAAO,CAAC,CAAC,CAAA;QACnD,OAAO,WAAW,CAAA;IACpB,CAAC,EAAE,EAAoB,CAAC,CAAA;IAExB,MAAM,IAAI,GAAe,EAAE,CAAA;IAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC;gBACR,OAAO;gBACP,SAAS;gBACT,OAAO,EAAE,OAAO;gBAChB,SAAS;aACV,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAA,6BAAY,EAAC,IAAI,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;AACtD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AwsService } from '../services.js';
|
|
2
|
+
import { Indexer } from './indexer.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get the indexers for a given AWS service.
|
|
5
|
+
*
|
|
6
|
+
* @param awsService the AWS service to get the indexers for
|
|
7
|
+
* @returns An array of indexers that are for the specified service.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getIndexersForService(awsService: AwsService): Indexer<any>[];
|
|
10
|
+
//# sourceMappingURL=indexMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexMap.d.ts","sourceRoot":"","sources":["../../../src/indexing/indexMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAuBtC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAE5E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getIndexersForService = getIndexersForService;
|
|
4
|
+
const services_js_1 = require("../services.js");
|
|
5
|
+
const accountOrgs_js_1 = require("./indexers/accountOrgs.js");
|
|
6
|
+
const apigateways_js_1 = require("./indexers/apigateways.js");
|
|
7
|
+
const buckets_js_1 = require("./indexers/buckets.js");
|
|
8
|
+
const vpcEndpoints_js_1 = require("./indexers/vpcEndpoints.js");
|
|
9
|
+
const allIndexers = [
|
|
10
|
+
accountOrgs_js_1.AccountOrganizationIndexer,
|
|
11
|
+
apigateways_js_1.ApiGatewayIndexer,
|
|
12
|
+
buckets_js_1.S3BucketIndexer,
|
|
13
|
+
vpcEndpoints_js_1.VpcEndpointIndexer
|
|
14
|
+
];
|
|
15
|
+
const indexMap = new Map();
|
|
16
|
+
for (const indexer of allIndexers) {
|
|
17
|
+
const service = (0, services_js_1.lowerCaseService)(indexer.awsService);
|
|
18
|
+
if (!indexMap.has(service)) {
|
|
19
|
+
indexMap.set(service, []);
|
|
20
|
+
}
|
|
21
|
+
indexMap.get(service).push(indexer);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the indexers for a given AWS service.
|
|
25
|
+
*
|
|
26
|
+
* @param awsService the AWS service to get the indexers for
|
|
27
|
+
* @returns An array of indexers that are for the specified service.
|
|
28
|
+
*/
|
|
29
|
+
function getIndexersForService(awsService) {
|
|
30
|
+
return indexMap.get((0, services_js_1.lowerCaseService)(awsService)) ?? [];
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=indexMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexMap.js","sourceRoot":"","sources":["../../../src/indexing/indexMap.ts"],"names":[],"mappings":";;AA8BA,sDAEC;AAhCD,gDAA6D;AAE7D,8DAAsE;AACtE,8DAA6D;AAC7D,sDAAuD;AACvD,gEAA+D;AAE/D,MAAM,WAAW,GAAmB;IAClC,2CAA0B;IAC1B,kCAAiB;IACjB,4BAAe;IACf,oCAAkB;CACnB,CAAA;AAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAA;AAElD,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAA,8BAAgB,EAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAC3B,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,UAAsB;IAC1D,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAA,8BAAgB,EAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;AACzD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AwsIamStore } from '../persistence/AwsIamStore.js';
|
|
2
|
+
import { AwsService } from '../services.js';
|
|
3
|
+
export interface Indexer<T> {
|
|
4
|
+
/**
|
|
5
|
+
* The service that this indexer is for
|
|
6
|
+
*/
|
|
7
|
+
awsService: AwsService;
|
|
8
|
+
/**
|
|
9
|
+
* The name of the indexer
|
|
10
|
+
*/
|
|
11
|
+
name: string;
|
|
12
|
+
/**
|
|
13
|
+
* Get the cache for the execute method to update
|
|
14
|
+
*/
|
|
15
|
+
getCache(storage: AwsIamStore): Promise<{
|
|
16
|
+
data: T;
|
|
17
|
+
lockId: string;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Save the cache after the execute method has updated it
|
|
21
|
+
*
|
|
22
|
+
* @param storage the storage to save the cache to
|
|
23
|
+
* @param cache the updated cache data to save
|
|
24
|
+
* @param lockId the lock ID to use for validation
|
|
25
|
+
* @returns true if the cache was saved successfully, false if there was an optimistic locking failure
|
|
26
|
+
*/
|
|
27
|
+
saveCache(storage: AwsIamStore, cache: T, lockId: string): Promise<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* Update the the cache in place.
|
|
30
|
+
*
|
|
31
|
+
* @param existingCache the existing cache to update
|
|
32
|
+
* @param accounts the accounts to update the cache for
|
|
33
|
+
* @param regions the regions to update the cache for
|
|
34
|
+
*/
|
|
35
|
+
updateCache: (existingCache: T, account: string, regions: string[], storage: AwsIamStore) => Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=indexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../../src/indexing/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IAEtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEpE;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE3E;;;;;;OAMG;IACH,WAAW,EAAE,CACX,aAAa,EAAE,CAAC,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../src/indexing/indexer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountOrgs.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/accountOrgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAQvC,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6CtE,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccountOrganizationIndexer = void 0;
|
|
4
|
+
const indexName = 'accounts-to-orgs';
|
|
5
|
+
exports.AccountOrganizationIndexer = {
|
|
6
|
+
awsService: 'organizations',
|
|
7
|
+
name: 'accountsToOrganizations',
|
|
8
|
+
getCache: async (storage) => {
|
|
9
|
+
const data = await storage.getIndex(indexName, {});
|
|
10
|
+
return data;
|
|
11
|
+
},
|
|
12
|
+
saveCache: async (storage, cache, lockId) => {
|
|
13
|
+
return storage.saveIndex(indexName, cache, lockId);
|
|
14
|
+
},
|
|
15
|
+
updateCache: async (existingCache, accountId, regions, storage) => {
|
|
16
|
+
const orgForAccount = await storage.getAccountMetadata(accountId, 'organization', undefined);
|
|
17
|
+
const organizationId = orgForAccount?.organizationId;
|
|
18
|
+
// If the account is not a organization management account, we don't need to update the cache
|
|
19
|
+
if (!organizationId) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const currentCacheKeys = Object.keys(existingCache);
|
|
23
|
+
// Remove all existing accounts for the organization
|
|
24
|
+
for (const key of currentCacheKeys) {
|
|
25
|
+
if (existingCache[key] == organizationId) {
|
|
26
|
+
delete existingCache[key];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const currentInfo = await storage.getOrganizationMetadata(organizationId, 'accounts');
|
|
30
|
+
// If there are no accounts for the org, return
|
|
31
|
+
if (!currentInfo) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
//Add the current accounts to the cache
|
|
35
|
+
const currentAccounts = Object.keys(currentInfo);
|
|
36
|
+
for (const account of currentAccounts) {
|
|
37
|
+
existingCache[account] = organizationId;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=accountOrgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountOrgs.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/accountOrgs.ts"],"names":[],"mappings":";;;AAMA,MAAM,SAAS,GAAG,kBAAkB,CAAA;AAEvB,QAAA,0BAA0B,GAAoC;IACzE,UAAU,EAAE,eAAe;IAC3B,IAAI,EAAE,yBAAyB;IAC/B,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,kBAAkB,CACpD,SAAS,EACT,cAAc,EACd,SAAS,CACV,CAAA;QAED,MAAM,cAAc,GAAG,aAAa,EAAE,cAAc,CAAA;QAEpD,6FAA6F;QAC7F,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAM;QACR,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,oDAAoD;QACpD,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;gBACzC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;QACrF,+CAA+C;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,uCAAuC;QACvC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAChD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,aAAa,CAAC,OAAO,CAAC,GAAG,cAAc,CAAA;QACzC,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apigateways.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/apigateways.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAQvC,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkD7D,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiGatewayIndexer = void 0;
|
|
4
|
+
const arn_js_1 = require("../../utils/arn.js");
|
|
5
|
+
const indexName = 'apigateways-to-accounts';
|
|
6
|
+
exports.ApiGatewayIndexer = {
|
|
7
|
+
awsService: 'apigateway',
|
|
8
|
+
name: 'apigatewaysToAccounts',
|
|
9
|
+
getCache: async (storage) => {
|
|
10
|
+
const data = await storage.getIndex(indexName, {});
|
|
11
|
+
return data;
|
|
12
|
+
},
|
|
13
|
+
saveCache: async (storage, cache, lockId) => {
|
|
14
|
+
return storage.saveIndex(indexName, cache, lockId);
|
|
15
|
+
},
|
|
16
|
+
updateCache: async (existingCache, accountId, regions, storage) => {
|
|
17
|
+
const regionsSet = new Set(regions);
|
|
18
|
+
const matchesRegion = (region) => {
|
|
19
|
+
return region && (regionsSet.size == 0 || regionsSet.has(region));
|
|
20
|
+
};
|
|
21
|
+
const currentCacheKeys = Object.keys(existingCache);
|
|
22
|
+
// Remove all existing gateways for the account in the specified regions
|
|
23
|
+
for (const key of currentCacheKeys) {
|
|
24
|
+
const arnParts = (0, arn_js_1.splitArnParts)(key);
|
|
25
|
+
if (existingCache[key] == accountId && matchesRegion(arnParts.region)) {
|
|
26
|
+
delete existingCache[key];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const currentGateways = [];
|
|
30
|
+
if (regions.length == 0) {
|
|
31
|
+
const gateways = await storage.findResourceMetadata(accountId, {
|
|
32
|
+
service: 'apigateway',
|
|
33
|
+
region: '*',
|
|
34
|
+
resourceType: 'restapis'
|
|
35
|
+
});
|
|
36
|
+
currentGateways.push(...gateways);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
for (const region of regions) {
|
|
40
|
+
const gateways = await storage.findResourceMetadata(accountId, {
|
|
41
|
+
service: 'apigateway',
|
|
42
|
+
region: region,
|
|
43
|
+
resourceType: 'restapis'
|
|
44
|
+
});
|
|
45
|
+
currentGateways.push(...gateways);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Add the new gateways to the cache
|
|
49
|
+
for (const gateway of currentGateways) {
|
|
50
|
+
existingCache[gateway.arn] = accountId;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=apigateways.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apigateways.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/apigateways.ts"],"names":[],"mappings":";;;AAAA,+CAAkD;AAOlD,MAAM,SAAS,GAAG,yBAAyB,CAAA;AAE9B,QAAA,iBAAiB,GAAoC;IAChE,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,uBAAuB;IAC7B,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE;YACnD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,CAAC,CAAA;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,wEAAwE;QACxE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,CAAA;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAyB,EAAE,CAAA;QAEhD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAqB,SAAS,EAAE;gBACjF,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,UAAU;aACzB,CAAC,CAAA;YACF,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAqB,SAAS,EAAE;oBACjF,OAAO,EAAE,YAAY;oBACrB,MAAM,EAAE,MAAM;oBACd,YAAY,EAAE,UAAU;iBACzB,CAAC,CAAA;gBACF,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;QACxC,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buckets.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/buckets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAUD,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAqClE,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.S3BucketIndexer = void 0;
|
|
4
|
+
const indexName = 'buckets-to-accounts';
|
|
5
|
+
exports.S3BucketIndexer = {
|
|
6
|
+
awsService: 's3',
|
|
7
|
+
name: 'bucketsToAccounts',
|
|
8
|
+
getCache: async (storage) => {
|
|
9
|
+
const data = await storage.getIndex(indexName, {});
|
|
10
|
+
return data;
|
|
11
|
+
},
|
|
12
|
+
saveCache: async (storage, cache, lockId) => {
|
|
13
|
+
return storage.saveIndex(indexName, cache, lockId);
|
|
14
|
+
},
|
|
15
|
+
updateCache: async (existingCache, accountId, regions, storage) => {
|
|
16
|
+
const regionsSet = new Set(regions);
|
|
17
|
+
const matchesRegion = (region) => {
|
|
18
|
+
return region && (regionsSet.size == 0 || regionsSet.has(region));
|
|
19
|
+
};
|
|
20
|
+
const currentCacheKeys = Object.keys(existingCache);
|
|
21
|
+
// Remove all existing buckets for the account in the specified regions
|
|
22
|
+
for (const key of currentCacheKeys) {
|
|
23
|
+
if (existingCache[key].accountId == accountId && matchesRegion(existingCache[key].region)) {
|
|
24
|
+
delete existingCache[key];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const currentBuckets = await storage.findResourceMetadata(accountId, {
|
|
28
|
+
service: 's3'
|
|
29
|
+
});
|
|
30
|
+
for (const bucket of currentBuckets) {
|
|
31
|
+
if (matchesRegion(bucket.region)) {
|
|
32
|
+
existingCache[bucket.name] = {
|
|
33
|
+
accountId: accountId,
|
|
34
|
+
region: bucket.region
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=buckets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buckets.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/buckets.ts"],"names":[],"mappings":";;;AAaA,MAAM,SAAS,GAAG,qBAAqB,CAAA;AAE1B,QAAA,eAAe,GAA2C;IACrE,UAAU,EAAE,IAAI;IAChB,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE;YACnD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,CAAC,CAAA;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,uEAAuE;QACvE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS,IAAI,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1F,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAiB,SAAS,EAAE;YACnF,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;oBAC3B,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAO;iBACvB,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpcEndpoints.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/vpcEndpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AASvC,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAqDhE,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VpcEndpointIndexer = void 0;
|
|
4
|
+
const arn_js_1 = require("../../utils/arn.js");
|
|
5
|
+
const indexName = 'vpcs-to-endpoints';
|
|
6
|
+
exports.VpcEndpointIndexer = {
|
|
7
|
+
awsService: 'ec2',
|
|
8
|
+
name: 'vpcsToEndpoints',
|
|
9
|
+
getCache: async (storage) => {
|
|
10
|
+
const data = await storage.getIndex(indexName, {});
|
|
11
|
+
return data;
|
|
12
|
+
},
|
|
13
|
+
saveCache: async (storage, cache, lockId) => {
|
|
14
|
+
return storage.saveIndex(indexName, cache, lockId);
|
|
15
|
+
},
|
|
16
|
+
updateCache: async (existingCache, accountId, regions, storage) => {
|
|
17
|
+
const regionsSet = new Set(regions);
|
|
18
|
+
const matchesRegion = (region) => {
|
|
19
|
+
return region && (regionsSet.size == 0 || regionsSet.has(region));
|
|
20
|
+
};
|
|
21
|
+
const currentCacheKeys = Object.keys(existingCache);
|
|
22
|
+
// Remove all existing vpcs for the account in the specified regions
|
|
23
|
+
for (const key of currentCacheKeys) {
|
|
24
|
+
const arnParts = (0, arn_js_1.splitArnParts)(key);
|
|
25
|
+
if (arnParts.accountId == accountId && matchesRegion(arnParts.region)) {
|
|
26
|
+
delete existingCache[key];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const currentEndpoints = [];
|
|
30
|
+
if (regions.length == 0) {
|
|
31
|
+
const gateways = await storage.findResourceMetadata(accountId, {
|
|
32
|
+
service: 'ec2',
|
|
33
|
+
region: '*',
|
|
34
|
+
resourceType: 'vpc-endpoint'
|
|
35
|
+
});
|
|
36
|
+
currentEndpoints.push(...gateways);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
for (const region of regions) {
|
|
40
|
+
const gateways = await storage.findResourceMetadata(accountId, {
|
|
41
|
+
service: 'ec2',
|
|
42
|
+
region: region,
|
|
43
|
+
resourceType: 'vpc-endpoint'
|
|
44
|
+
});
|
|
45
|
+
currentEndpoints.push(...gateways);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
for (const endpoint of currentEndpoints) {
|
|
49
|
+
const vpcId = endpoint.vpc;
|
|
50
|
+
if (!existingCache[vpcId]) {
|
|
51
|
+
existingCache[vpcId] = [];
|
|
52
|
+
}
|
|
53
|
+
existingCache[vpcId].push(endpoint.arn);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=vpcEndpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpcEndpoints.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/vpcEndpoints.ts"],"names":[],"mappings":";;;AAAA,+CAAkD;AAQlD,MAAM,SAAS,GAAG,mBAAmB,CAAA;AAExB,QAAA,kBAAkB,GAAsC;IACnE,UAAU,EAAE,KAAK;IACjB,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE;YACnD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,CAAC,CAAA;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,oEAAoE;QACpE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,CAAA;YACnC,IAAI,QAAQ,CAAC,SAAS,IAAI,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAA0B,EAAE,CAAA;QAElD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAsB,SAAS,EAAE;gBAClF,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,cAAc;aAC7B,CAAC,CAAA;YACF,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAsB,SAAS,EAAE;oBAClF,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,MAAM;oBACd,YAAY,EAAE,cAAc;iBAC7B,CAAC,CAAA;gBACF,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAA;YAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;YAC3B,CAAC;YACD,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;CACF,CAAA"}
|