@cloud-copilot/iam-collect 0.1.2 → 0.1.3
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/README.md +21 -1
- package/dist/cjs/aws/ClientPool.d.ts +27 -0
- package/dist/cjs/aws/ClientPool.d.ts.map +1 -0
- package/dist/cjs/aws/ClientPool.js +52 -0
- package/dist/cjs/aws/ClientPool.js.map +1 -0
- package/dist/cjs/aws/auth.d.ts +16 -0
- package/dist/cjs/aws/auth.d.ts.map +1 -0
- package/dist/cjs/aws/auth.js +76 -0
- package/dist/cjs/aws/auth.js.map +1 -0
- package/dist/cjs/cli.js +46 -8
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/config/config.d.ts +22 -11
- package/dist/cjs/config/config.d.ts.map +1 -1
- package/dist/cjs/config/config.js +52 -7
- package/dist/cjs/config/config.js.map +1 -1
- package/dist/cjs/config/configFile.d.ts +16 -0
- package/dist/cjs/config/configFile.d.ts.map +1 -0
- package/dist/cjs/config/configFile.js +49 -0
- package/dist/cjs/config/configFile.js.map +1 -0
- package/dist/cjs/config/defaultConfig.d.ts.map +1 -1
- package/dist/cjs/config/defaultConfig.js +38 -1
- package/dist/cjs/config/defaultConfig.js.map +1 -1
- package/dist/cjs/download/download.d.ts +3 -0
- package/dist/cjs/download/download.d.ts.map +1 -0
- package/dist/cjs/download/download.js +67 -0
- package/dist/cjs/download/download.js.map +1 -0
- package/dist/cjs/persistence/AwsIamStore.d.ts +95 -0
- package/dist/cjs/persistence/AwsIamStore.d.ts.map +1 -0
- package/dist/cjs/persistence/AwsIamStore.js +3 -0
- package/dist/cjs/persistence/AwsIamStore.js.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.d.ts +20 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.d.ts.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.js +77 -0
- package/dist/cjs/persistence/file/FileSystemAdapter.js.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.js +96 -0
- package/dist/cjs/persistence/file/FileSystemAwsIamStore.js.map +1 -0
- package/dist/cjs/persistence/util.d.ts +28 -0
- package/dist/cjs/persistence/util.d.ts.map +1 -0
- package/dist/cjs/persistence/util.js +46 -0
- package/dist/cjs/persistence/util.js.map +1 -0
- package/dist/cjs/regions.d.ts +3 -0
- package/dist/cjs/regions.d.ts.map +1 -0
- package/dist/cjs/regions.js +15 -0
- package/dist/cjs/regions.js.map +1 -0
- package/dist/cjs/services.d.ts +3 -0
- package/dist/cjs/services.d.ts.map +1 -0
- package/dist/cjs/services.js +5 -0
- package/dist/cjs/services.js.map +1 -0
- package/dist/cjs/syncs/iam/authorizationDetails.d.ts +104 -0
- package/dist/cjs/syncs/iam/authorizationDetails.d.ts.map +1 -0
- package/dist/cjs/syncs/iam/authorizationDetails.js +490 -0
- package/dist/cjs/syncs/iam/authorizationDetails.js.map +1 -0
- package/dist/cjs/syncs/lambda/lambda.d.ts +3 -0
- package/dist/cjs/syncs/lambda/lambda.d.ts.map +1 -0
- package/dist/cjs/syncs/lambda/lambda.js +54 -0
- package/dist/cjs/syncs/lambda/lambda.js.map +1 -0
- package/dist/cjs/syncs/sync.d.ts +27 -0
- package/dist/cjs/syncs/sync.d.ts.map +1 -0
- package/dist/cjs/syncs/sync.js +16 -0
- package/dist/cjs/syncs/sync.js.map +1 -0
- package/dist/cjs/syncs/syncMap.d.ts +17 -0
- package/dist/cjs/syncs/syncMap.d.ts.map +1 -0
- package/dist/cjs/syncs/syncMap.js +51 -0
- package/dist/cjs/syncs/syncMap.js.map +1 -0
- package/dist/cjs/utils/arn.d.ts +26 -0
- package/dist/cjs/utils/arn.d.ts.map +1 -0
- package/dist/cjs/utils/arn.js +60 -0
- package/dist/cjs/utils/arn.js.map +1 -0
- package/dist/cjs/utils/client-tools.d.ts +15 -0
- package/dist/cjs/utils/client-tools.d.ts.map +1 -0
- package/dist/cjs/utils/client-tools.js +42 -0
- package/dist/cjs/utils/client-tools.js.map +1 -0
- package/dist/cjs/utils/strings.d.ts +8 -0
- package/dist/cjs/utils/strings.d.ts.map +1 -0
- package/dist/cjs/utils/strings.js +19 -0
- package/dist/cjs/utils/strings.js.map +1 -0
- package/dist/cjs/utils/types.d.ts +2 -0
- package/dist/cjs/utils/types.d.ts.map +1 -0
- package/dist/cjs/utils/types.js +7 -0
- package/dist/cjs/utils/types.js.map +1 -0
- package/dist/esm/aws/ClientPool.d.ts +27 -0
- package/dist/esm/aws/ClientPool.d.ts.map +1 -0
- package/dist/esm/aws/ClientPool.js +50 -0
- package/dist/esm/aws/ClientPool.js.map +1 -0
- package/dist/esm/aws/auth.d.ts +16 -0
- package/dist/esm/aws/auth.d.ts.map +1 -0
- package/dist/esm/aws/auth.js +71 -0
- package/dist/esm/aws/auth.js.map +1 -0
- package/dist/esm/cli.js +46 -8
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/config/config.d.ts +22 -11
- package/dist/esm/config/config.d.ts.map +1 -1
- package/dist/esm/config/config.js +50 -7
- package/dist/esm/config/config.js.map +1 -1
- package/dist/esm/config/configFile.d.ts +16 -0
- package/dist/esm/config/configFile.d.ts.map +1 -0
- package/dist/esm/config/configFile.js +45 -0
- package/dist/esm/config/configFile.js.map +1 -0
- package/dist/esm/config/defaultConfig.d.ts.map +1 -1
- package/dist/esm/config/defaultConfig.js +38 -1
- package/dist/esm/config/defaultConfig.js.map +1 -1
- package/dist/esm/download/download.d.ts +3 -0
- package/dist/esm/download/download.d.ts.map +1 -0
- package/dist/esm/download/download.js +64 -0
- package/dist/esm/download/download.js.map +1 -0
- package/dist/esm/persistence/AwsIamStore.d.ts +95 -0
- package/dist/esm/persistence/AwsIamStore.d.ts.map +1 -0
- package/dist/esm/persistence/AwsIamStore.js +2 -0
- package/dist/esm/persistence/AwsIamStore.js.map +1 -0
- package/dist/esm/persistence/file/FileSystemAdapter.d.ts +20 -0
- package/dist/esm/persistence/file/FileSystemAdapter.d.ts.map +1 -0
- package/dist/esm/persistence/file/FileSystemAdapter.js +73 -0
- package/dist/esm/persistence/file/FileSystemAdapter.js.map +1 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.js +89 -0
- package/dist/esm/persistence/file/FileSystemAwsIamStore.js.map +1 -0
- package/dist/esm/persistence/util.d.ts +28 -0
- package/dist/esm/persistence/util.d.ts.map +1 -0
- package/dist/esm/persistence/util.js +41 -0
- package/dist/esm/persistence/util.js.map +1 -0
- package/dist/esm/regions.d.ts +3 -0
- package/dist/esm/regions.d.ts.map +1 -0
- package/dist/esm/regions.js +12 -0
- package/dist/esm/regions.js.map +1 -0
- package/dist/esm/services.d.ts +3 -0
- package/dist/esm/services.d.ts.map +1 -0
- package/dist/esm/services.js +2 -0
- package/dist/esm/services.js.map +1 -0
- package/dist/esm/syncs/iam/authorizationDetails.d.ts +104 -0
- package/dist/esm/syncs/iam/authorizationDetails.d.ts.map +1 -0
- package/dist/esm/syncs/iam/authorizationDetails.js +478 -0
- package/dist/esm/syncs/iam/authorizationDetails.js.map +1 -0
- package/dist/esm/syncs/lambda/lambda.d.ts +3 -0
- package/dist/esm/syncs/lambda/lambda.d.ts.map +1 -0
- package/dist/esm/syncs/lambda/lambda.js +51 -0
- package/dist/esm/syncs/lambda/lambda.js.map +1 -0
- package/dist/esm/syncs/sync.d.ts +27 -0
- package/dist/esm/syncs/sync.d.ts.map +1 -0
- package/dist/esm/syncs/sync.js +13 -0
- package/dist/esm/syncs/sync.js.map +1 -0
- package/dist/esm/syncs/syncMap.d.ts +17 -0
- package/dist/esm/syncs/syncMap.d.ts.map +1 -0
- package/dist/esm/syncs/syncMap.js +47 -0
- package/dist/esm/syncs/syncMap.js.map +1 -0
- package/dist/esm/utils/arn.d.ts +26 -0
- package/dist/esm/utils/arn.d.ts.map +1 -0
- package/dist/esm/utils/arn.js +56 -0
- package/dist/esm/utils/arn.js.map +1 -0
- package/dist/esm/utils/client-tools.d.ts +15 -0
- package/dist/esm/utils/client-tools.d.ts.map +1 -0
- package/dist/esm/utils/client-tools.js +38 -0
- package/dist/esm/utils/client-tools.js.map +1 -0
- package/dist/esm/utils/strings.d.ts +8 -0
- package/dist/esm/utils/strings.d.ts.map +1 -0
- package/dist/esm/utils/strings.js +16 -0
- package/dist/esm/utils/strings.js.map +1 -0
- package/dist/esm/utils/types.d.ts +2 -0
- package/dist/esm/utils/types.d.ts.map +1 -0
- package/dist/esm/utils/types.js +4 -0
- package/dist/esm/utils/types.js.map +1 -0
- package/package.json +13 -1
- package/dist/cjs/cliUtils.d.ts +0 -13
- package/dist/cjs/cliUtils.d.ts.map +0 -1
- package/dist/cjs/cliUtils.js +0 -43
- package/dist/cjs/cliUtils.js.map +0 -1
- package/dist/esm/cliUtils.d.ts +0 -13
- package/dist/esm/cliUtils.d.ts.map +0 -1
- package/dist/esm/cliUtils.js +0 -40
- package/dist/esm/cliUtils.js.map +0 -1
package/dist/esm/cli.js
CHANGED
|
@@ -1,15 +1,47 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { parseCliArguments } from '
|
|
2
|
+
import { parseCliArguments } from '@cloud-copilot/cli';
|
|
3
|
+
import { loadConfigFiles } from './config/configFile.js';
|
|
3
4
|
import { createDefaultConfiguration } from './config/createConfigFile.js';
|
|
4
5
|
import { defaultConfigExists } from './config/defaultConfig.js';
|
|
6
|
+
import { downloadData } from './download/download.js';
|
|
5
7
|
const rawArgs = process.argv.slice(2); // Ignore the first two elements
|
|
6
|
-
const parsedArgs = parseCliArguments(rawArgs)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
// const parsedArgs = parseCliArguments(rawArgs)
|
|
9
|
+
const cli = parseCliArguments('iam-collect', {
|
|
10
|
+
init: {
|
|
11
|
+
description: 'Initialize the iam-collect configuration file',
|
|
12
|
+
options: {}
|
|
13
|
+
},
|
|
14
|
+
download: {
|
|
15
|
+
description: 'Download IAM data',
|
|
16
|
+
options: {
|
|
17
|
+
configFiles: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'The configuration files to use',
|
|
20
|
+
values: 'multiple'
|
|
21
|
+
},
|
|
22
|
+
accountIds: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'The account IDs to download from',
|
|
25
|
+
values: 'multiple'
|
|
26
|
+
},
|
|
27
|
+
regions: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
description: 'The regions to download from',
|
|
30
|
+
values: 'multiple'
|
|
31
|
+
},
|
|
32
|
+
services: {
|
|
33
|
+
type: 'string',
|
|
34
|
+
description: 'The services to download',
|
|
35
|
+
values: 'multiple'
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}, {}, {
|
|
40
|
+
envPrefix: 'IAM_COLLECT',
|
|
41
|
+
showHelpIfNoArgs: true,
|
|
42
|
+
requireSubcommand: true
|
|
43
|
+
});
|
|
44
|
+
if (cli.subcommand === 'init') {
|
|
13
45
|
if (defaultConfigExists()) {
|
|
14
46
|
console.error('Configuration file already exists');
|
|
15
47
|
process.exit(1);
|
|
@@ -18,4 +50,10 @@ if (command === 'init') {
|
|
|
18
50
|
createDefaultConfiguration();
|
|
19
51
|
process.exit(0);
|
|
20
52
|
}
|
|
53
|
+
else if (cli.subcommand === 'download') {
|
|
54
|
+
const defaultConfig = './iam-collect.jsonc';
|
|
55
|
+
const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
|
|
56
|
+
const configs = loadConfigFiles(configFiles);
|
|
57
|
+
downloadData(configs, cli.args.accountIds, cli.args.regions, cli.args.services);
|
|
58
|
+
}
|
|
21
59
|
//# sourceMappingURL=cli.js.map
|
package/dist/esm/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,gCAAgC;AACtE,gDAAgD;AAEhD,MAAM,GAAG,GAAG,iBAAiB,CAC3B,aAAa,EACb;IACE,IAAI,EAAE;QACJ,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,EAAE;KACZ;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE;YACP,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gCAAgC;gBAC7C,MAAM,EAAE,UAAU;aACnB;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kCAAkC;gBAC/C,MAAM,EAAE,UAAU;aACnB;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;gBAC3C,MAAM,EAAE,UAAU;aACnB;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0BAA0B;gBACvC,MAAM,EAAE,UAAU;aACnB;SACF;KACF;CACF,EACD,EAAE,EACF;IACE,SAAS,EAAE,aAAa;IACxB,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;CACxB,CACF,CAAA;AAED,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;IAC9B,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC9B,0BAA0B,EAAE,CAAA;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;KAAM,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,qBAAqB,CAAA;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IAC7F,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,CAAA;IAC5C,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACjF,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { AwsService } from '../services.js';
|
|
2
|
+
export interface AuthConfig {
|
|
2
3
|
/**
|
|
3
4
|
* The profile to use when authenticating with AWS. If not present, the default AWS SDK credential resolution chain will be used.
|
|
4
5
|
*/
|
|
@@ -7,11 +8,7 @@ interface AuthConfig {
|
|
|
7
8
|
/**
|
|
8
9
|
* The path and name of the role to assume. Required if using a role.
|
|
9
10
|
*/
|
|
10
|
-
pathAndName:
|
|
11
|
-
/**
|
|
12
|
-
* The account to assume the role in. Optional, if not present the account of the current principal will be used.
|
|
13
|
-
*/
|
|
14
|
-
account?: string;
|
|
11
|
+
pathAndName: string;
|
|
15
12
|
/**
|
|
16
13
|
* Optional, the external id to use when assuming the role.
|
|
17
14
|
*/
|
|
@@ -32,7 +29,9 @@ export interface S3StorageConfig {
|
|
|
32
29
|
prefix?: string;
|
|
33
30
|
region: string;
|
|
34
31
|
endpoint?: string;
|
|
35
|
-
auth?: AuthConfig
|
|
32
|
+
auth?: AuthConfig & {
|
|
33
|
+
accountId: string;
|
|
34
|
+
};
|
|
36
35
|
}
|
|
37
36
|
export type StorageConfig = FileSystemStorageConfig | S3StorageConfig;
|
|
38
37
|
interface BaseConfig {
|
|
@@ -56,19 +55,31 @@ interface AccountConfig extends BaseConfig {
|
|
|
56
55
|
export interface TopLevelConfig extends BaseConfig {
|
|
57
56
|
name?: string;
|
|
58
57
|
iamCollectVersion: string;
|
|
59
|
-
storage
|
|
58
|
+
storage?: StorageConfig;
|
|
60
59
|
auth?: AuthConfig;
|
|
61
60
|
accounts?: Record<string, AccountConfig>;
|
|
62
61
|
serviceConfigs?: Record<string, ServiceConfig>;
|
|
63
62
|
}
|
|
64
|
-
type ServicesForAccount =
|
|
63
|
+
type ServicesForAccount = AwsService[];
|
|
65
64
|
type RegionsForAccountService = string[];
|
|
66
|
-
interface ResolvedAccountServiceRegionConfig {
|
|
65
|
+
export interface ResolvedAccountServiceRegionConfig {
|
|
66
|
+
accountId: string;
|
|
67
|
+
service: string;
|
|
68
|
+
region: string;
|
|
67
69
|
auth?: AuthConfig;
|
|
68
70
|
endpoint?: string;
|
|
69
71
|
}
|
|
70
72
|
export declare function servicesForAccount(account: string, configs: TopLevelConfig[], allServices: string[]): ServicesForAccount;
|
|
71
73
|
export declare function regionsForService(service: string, account: string, configs: TopLevelConfig[], allRegions: string[]): RegionsForAccountService;
|
|
72
|
-
export declare function accountServiceRegionConfig(service: string,
|
|
74
|
+
export declare function accountServiceRegionConfig(service: string, accountId: string, region: string, configs: TopLevelConfig[]): ResolvedAccountServiceRegionConfig;
|
|
75
|
+
/**
|
|
76
|
+
* Get the auth config for a specific account
|
|
77
|
+
*
|
|
78
|
+
* @param accountId the account id to get the auth config for
|
|
79
|
+
* @param configs the configs to search
|
|
80
|
+
* @returns the auth config for the account, or undefined if not found
|
|
81
|
+
*/
|
|
82
|
+
export declare function getAccountAuthConfig(accountId: string, configs: TopLevelConfig[]): AuthConfig | undefined;
|
|
83
|
+
export declare function getStorageConfig(configs: TopLevelConfig[]): StorageConfig | undefined;
|
|
73
84
|
export {};
|
|
74
85
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,8 +62,20 @@ export function regionsForService(service, account, configs, allRegions) {
|
|
|
62
62
|
}
|
|
63
63
|
return regions;
|
|
64
64
|
}
|
|
65
|
-
export function
|
|
66
|
-
|
|
65
|
+
// export function defaultStsRegion(configs: TopLevelConfig[]): string {
|
|
66
|
+
// for (const config of configs) {
|
|
67
|
+
// if (config.regions?.included) {
|
|
68
|
+
// return config.regions.included[0]
|
|
69
|
+
// }
|
|
70
|
+
// }
|
|
71
|
+
// return 'us-east-1'
|
|
72
|
+
// }
|
|
73
|
+
export function accountServiceRegionConfig(service, accountId, region, configs) {
|
|
74
|
+
let result = {
|
|
75
|
+
accountId: accountId,
|
|
76
|
+
service,
|
|
77
|
+
region
|
|
78
|
+
};
|
|
67
79
|
for (const config of configs) {
|
|
68
80
|
if (config.auth) {
|
|
69
81
|
result.auth = config.auth;
|
|
@@ -71,7 +83,7 @@ export function accountServiceRegionConfig(service, account, region, configs) {
|
|
|
71
83
|
const serviceConfig = config.serviceConfigs?.[service];
|
|
72
84
|
if (serviceConfig) {
|
|
73
85
|
if (serviceConfig.auth) {
|
|
74
|
-
result.auth = serviceConfig.auth;
|
|
86
|
+
result.auth = { ...result.auth, ...serviceConfig.auth };
|
|
75
87
|
}
|
|
76
88
|
if (serviceConfig.endpoint) {
|
|
77
89
|
result.endpoint = serviceConfig.endpoint;
|
|
@@ -79,14 +91,14 @@ export function accountServiceRegionConfig(service, account, region, configs) {
|
|
|
79
91
|
const regionConfig = serviceConfig.regionConfigs?.[region];
|
|
80
92
|
if (regionConfig) {
|
|
81
93
|
if (regionConfig.auth) {
|
|
82
|
-
result.auth = regionConfig.auth;
|
|
94
|
+
result.auth = { ...result.auth, ...regionConfig.auth };
|
|
83
95
|
}
|
|
84
96
|
if (regionConfig.endpoint) {
|
|
85
97
|
result.endpoint = regionConfig.endpoint;
|
|
86
98
|
}
|
|
87
99
|
}
|
|
88
100
|
}
|
|
89
|
-
const accountConfig = config.accounts?.[
|
|
101
|
+
const accountConfig = config.accounts?.[accountId];
|
|
90
102
|
if (accountConfig) {
|
|
91
103
|
if (accountConfig.auth) {
|
|
92
104
|
result.auth = accountConfig.auth;
|
|
@@ -94,7 +106,7 @@ export function accountServiceRegionConfig(service, account, region, configs) {
|
|
|
94
106
|
const accountServiceConfig = accountConfig.serviceConfigs?.[service];
|
|
95
107
|
if (accountServiceConfig) {
|
|
96
108
|
if (accountServiceConfig.auth) {
|
|
97
|
-
result.auth = accountServiceConfig.auth;
|
|
109
|
+
result.auth = { ...result.auth, ...accountServiceConfig.auth };
|
|
98
110
|
}
|
|
99
111
|
if (accountServiceConfig.endpoint) {
|
|
100
112
|
result.endpoint = accountServiceConfig.endpoint;
|
|
@@ -102,7 +114,7 @@ export function accountServiceRegionConfig(service, account, region, configs) {
|
|
|
102
114
|
const accountRegionConfig = accountServiceConfig.regionConfigs?.[region];
|
|
103
115
|
if (accountRegionConfig) {
|
|
104
116
|
if (accountRegionConfig.auth) {
|
|
105
|
-
result.auth = accountRegionConfig.auth;
|
|
117
|
+
result.auth = { ...result.auth, ...accountRegionConfig.auth };
|
|
106
118
|
}
|
|
107
119
|
if (accountRegionConfig.endpoint) {
|
|
108
120
|
result.endpoint = accountRegionConfig.endpoint;
|
|
@@ -113,4 +125,35 @@ export function accountServiceRegionConfig(service, account, region, configs) {
|
|
|
113
125
|
}
|
|
114
126
|
return result;
|
|
115
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Get the auth config for a specific account
|
|
130
|
+
*
|
|
131
|
+
* @param accountId the account id to get the auth config for
|
|
132
|
+
* @param configs the configs to search
|
|
133
|
+
* @returns the auth config for the account, or undefined if not found
|
|
134
|
+
*/
|
|
135
|
+
export function getAccountAuthConfig(accountId, configs) {
|
|
136
|
+
let result = undefined;
|
|
137
|
+
for (const config of configs) {
|
|
138
|
+
if (config.auth) {
|
|
139
|
+
result = config.auth;
|
|
140
|
+
}
|
|
141
|
+
const accountConfig = config.accounts?.[accountId];
|
|
142
|
+
if (accountConfig?.auth) {
|
|
143
|
+
result = { ...(result || {}), ...accountConfig.auth };
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
export function getStorageConfig(configs) {
|
|
149
|
+
const reverseConfigs = [...configs].reverse();
|
|
150
|
+
// Iterate through the configs to find the first storage config
|
|
151
|
+
for (const config of reverseConfigs) {
|
|
152
|
+
if (config.storage) {
|
|
153
|
+
return config.storage;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Return undefined if no storage config is found
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
116
159
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TopLevelConfig } from './config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load config files from the given paths
|
|
4
|
+
*
|
|
5
|
+
* @param paths the paths to the config files
|
|
6
|
+
* @returns the loaded config files
|
|
7
|
+
*/
|
|
8
|
+
export declare function loadConfigFiles(paths: string[]): TopLevelConfig[];
|
|
9
|
+
/**
|
|
10
|
+
* Load a config file from the given path
|
|
11
|
+
*
|
|
12
|
+
* @param path the path to the config file
|
|
13
|
+
* @returns the loaded config file
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadConfigFile(path: string): TopLevelConfig;
|
|
16
|
+
//# sourceMappingURL=configFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configFile.d.ts","sourceRoot":"","sources":["../../../src/config/configFile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAW5C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAK3D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { parse } from 'jsonc-parser';
|
|
3
|
+
import { resolve } from 'path';
|
|
4
|
+
/**
|
|
5
|
+
* Gets the current directory the process is running in
|
|
6
|
+
*
|
|
7
|
+
* @returns the current directory
|
|
8
|
+
*/
|
|
9
|
+
function getCurrentDirectory() {
|
|
10
|
+
return process.cwd();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Load config files from the given paths
|
|
14
|
+
*
|
|
15
|
+
* @param paths the paths to the config files
|
|
16
|
+
* @returns the loaded config files
|
|
17
|
+
*/
|
|
18
|
+
export function loadConfigFiles(paths) {
|
|
19
|
+
return paths.map(loadConfigFile);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Load a config file from the given path
|
|
23
|
+
*
|
|
24
|
+
* @param path the path to the config file
|
|
25
|
+
* @returns the loaded config file
|
|
26
|
+
*/
|
|
27
|
+
export function loadConfigFile(path) {
|
|
28
|
+
const absPath = getAbsolutePath(path);
|
|
29
|
+
const contents = readFileSync(absPath, 'utf-8');
|
|
30
|
+
const parsed = parse(contents);
|
|
31
|
+
return parsed;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get the absolute path to a configuration file
|
|
35
|
+
*
|
|
36
|
+
* @param path - The path to the configuration file
|
|
37
|
+
* @returns the absolute path to the configuration file
|
|
38
|
+
*/
|
|
39
|
+
function getAbsolutePath(path) {
|
|
40
|
+
if (path.startsWith('.')) {
|
|
41
|
+
return resolve(getCurrentDirectory(), path);
|
|
42
|
+
}
|
|
43
|
+
return resolve(path);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=configFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configFile.js","sourceRoot":"","sources":["../../../src/config/configFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAG9B;;;;GAIG;AACH,SAAS,mBAAmB;IAC1B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAA;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAe;IAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;AAExD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;
|
|
1
|
+
{"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;AAExD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AA8FD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
|
@@ -27,7 +27,7 @@ const defaultConfig = `
|
|
|
27
27
|
"storage": {
|
|
28
28
|
"type": "file",
|
|
29
29
|
//If this starts with a '.', it is relative to the config file, otherwise it is an absolute path.
|
|
30
|
-
"
|
|
30
|
+
"path": "./collect"
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
/*
|
|
@@ -41,10 +41,47 @@ const defaultConfig = `
|
|
|
41
41
|
//Optional auth configuration, see https://github.com/cloud-copilot/iam-collect/docs/Authentication.md
|
|
42
42
|
"auth": {
|
|
43
43
|
//The type of authentication to use
|
|
44
|
+
// Can include accountId
|
|
45
|
+
"accountId": "123456789012"
|
|
44
46
|
}
|
|
45
47
|
},
|
|
46
48
|
*/
|
|
47
49
|
|
|
50
|
+
/*
|
|
51
|
+
Optionally specify separate configurations for accounts:
|
|
52
|
+
"accounts": {
|
|
53
|
+
"123456789012": {
|
|
54
|
+
//Optional auth for the account:
|
|
55
|
+
"auth": {
|
|
56
|
+
//The type of authentication to use
|
|
57
|
+
},
|
|
58
|
+
"regions": {
|
|
59
|
+
//Optional regions to include, if empty all regions are included
|
|
60
|
+
// "included": ["us-east-1", "us-west-1"],
|
|
61
|
+
//Optional regions to exclude, if empty no regions are excluded. You can use it with included, but that wouldn't make much sense.
|
|
62
|
+
// "excluded": ["us-west-2"]
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
"serviceConfigs" : {
|
|
66
|
+
"s3": {
|
|
67
|
+
"endpoint": "https://s3.us-west-2.amazonaws.com", // Optional endpoint if using a specific VPC endpoint
|
|
68
|
+
"auth": {
|
|
69
|
+
//Override auth for a specific service
|
|
70
|
+
}
|
|
71
|
+
regionConfigs: {
|
|
72
|
+
"us-west-1": {
|
|
73
|
+
//Optional configuration for the region
|
|
74
|
+
endpoint: "https://s3.us-west-1.amazonaws.com", // Optional endpoint if using a specific VPC endpoint
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
*/
|
|
84
|
+
|
|
48
85
|
// Optional block, by default all regions returned by ec2:DescribeRegions with 'opt-in-not-required' or 'opted-in' are included
|
|
49
86
|
// If regions are specified in the CLI, this is ignored
|
|
50
87
|
// "regions": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AAExD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAA;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,aAAa,GAAG
|
|
1
|
+
{"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAA;AAExD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAA;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0FrB,CAAA;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAA;AAC5D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,cAAc,EACf,MAAM,qBAAqB,CAAA;AAO5B,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CAgEf"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { getCredentials, getDefaultCredentials, getTokenInfo } from '../aws/auth.js';
|
|
2
|
+
import { accountServiceRegionConfig, getAccountAuthConfig, getStorageConfig, regionsForService, servicesForAccount } from '../config/config.js';
|
|
3
|
+
import { FileSystemAwsIamStore } from '../persistence/file/FileSystemAwsIamStore.js';
|
|
4
|
+
import { getEnabledRegions } from '../regions.js';
|
|
5
|
+
import { allServices } from '../services.js';
|
|
6
|
+
import { getGlobalSyncsForService, getRegionalSyncsForService } from '../syncs/syncMap.js';
|
|
7
|
+
export async function downloadData(configs, accountIds, regions, services) {
|
|
8
|
+
if (accountIds.length === 0) {
|
|
9
|
+
const defaultCredentials = await getDefaultCredentials();
|
|
10
|
+
const tokenInfo = await getTokenInfo(defaultCredentials);
|
|
11
|
+
accountIds = [tokenInfo.accountId];
|
|
12
|
+
}
|
|
13
|
+
const storageConfig = getStorageConfig(configs);
|
|
14
|
+
if (!storageConfig) {
|
|
15
|
+
throw new Error('No storage configuration found. Cannot download data.');
|
|
16
|
+
}
|
|
17
|
+
for (const accountId of accountIds) {
|
|
18
|
+
console.log(`Downloading data for account ${accountId}`);
|
|
19
|
+
const authForAccount = getAccountAuthConfig(accountId, configs);
|
|
20
|
+
const credentials = await getCredentials(accountId, authForAccount);
|
|
21
|
+
let enabledRegions = [];
|
|
22
|
+
if (regions.length === 0) {
|
|
23
|
+
enabledRegions = await getEnabledRegions(credentials);
|
|
24
|
+
// console.log(`Enabled regions for account ${accountId}:`, enabledRegions)
|
|
25
|
+
}
|
|
26
|
+
const storage = createStorageClient(storageConfig, credentials.partition);
|
|
27
|
+
if (services.length === 0) {
|
|
28
|
+
services = allServices;
|
|
29
|
+
}
|
|
30
|
+
const enabledServices = servicesForAccount(accountId, configs, services);
|
|
31
|
+
for (const service of enabledServices) {
|
|
32
|
+
console.log(`Service ${service} for account ${accountId}`);
|
|
33
|
+
const serviceRegions = regionsForService(service, accountId, configs, enabledRegions);
|
|
34
|
+
//Go through global syncs for the service
|
|
35
|
+
const globalSyncs = getGlobalSyncsForService(service);
|
|
36
|
+
const globalRegion = serviceRegions.at(0);
|
|
37
|
+
const globalConfig = accountServiceRegionConfig(service, accountId, globalRegion, configs);
|
|
38
|
+
const globalCredentials = await getCredentials(accountId, globalConfig.auth);
|
|
39
|
+
for (const globalSync of globalSyncs) {
|
|
40
|
+
await globalSync.execute(accountId, globalRegion, globalCredentials, storage, globalConfig.endpoint);
|
|
41
|
+
}
|
|
42
|
+
//Go through regional syncs for the service
|
|
43
|
+
for (const region of serviceRegions) {
|
|
44
|
+
console.log(`Service ${service} for account ${accountId} in region ${region}`);
|
|
45
|
+
const regionalSyncs = getRegionalSyncsForService(service);
|
|
46
|
+
if (regionalSyncs.length === 0) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const asrConfig = accountServiceRegionConfig(service, accountId, region, configs);
|
|
50
|
+
const regionalCredentials = await getCredentials(accountId, asrConfig.auth);
|
|
51
|
+
for (const sync of regionalSyncs) {
|
|
52
|
+
await sync.execute(accountId, region, regionalCredentials, storage, asrConfig.endpoint);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function createStorageClient(storageConfig, partition) {
|
|
59
|
+
if (storageConfig.type === 'file') {
|
|
60
|
+
return new FileSystemAwsIamStore(storageConfig.path, partition);
|
|
61
|
+
}
|
|
62
|
+
throw new Error(`Unsupported storage type: ${storageConfig.type}. Supported types are: file.`);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACpF,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAA;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAE1F,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAyB,EACzB,UAAoB,EACpB,OAAiB,EACjB,QAAkB;IAElB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,EAAE,CAAA;QACxD,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,CAAA;QACxD,UAAU,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAA;QACxD,MAAM,cAAc,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAC/D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;QAEnE,IAAI,cAAc,GAAa,EAAE,CAAA;QACjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,cAAc,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAA;YACrD,2EAA2E;QAC7E,CAAC;QAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;QAEzE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,GAAG,WAAW,CAAA;QACxB,CAAC;QAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QACxE,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,gBAAgB,SAAS,EAAE,CAAC,CAAA;YAC1D,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,CAAA;YACrF,yCAAyC;YACzC,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;YACrD,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;YAC1C,MAAM,YAAY,GAAG,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;YAC1F,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;YAE5E,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,UAAU,CAAC,OAAO,CACtB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,YAAY,CAAC,QAAQ,CACtB,CAAA;YACH,CAAC;YAED,2CAA2C;YAC3C,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,gBAAgB,SAAS,cAAc,MAAM,EAAE,CAAC,CAAA;gBAC9E,MAAM,aAAa,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAA;gBACzD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/B,SAAQ;gBACV,CAAC;gBACD,MAAM,SAAS,GAAG,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;gBACjF,MAAM,mBAAmB,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;gBAE3E,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBACjC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;gBACzF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,aAA4B,EAAE,SAAiB;IAC1E,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAClC,OAAO,IAAI,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACjE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,aAAa,CAAC,IAAI,8BAA8B,CAAC,CAAA;AAChG,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The parts of the a resource type that can be used for categories.
|
|
3
|
+
*/
|
|
4
|
+
export interface ResourceTypeParts {
|
|
5
|
+
/**
|
|
6
|
+
* The AWS partition (e.g., "aws", "aws-cn", "aws-gov").
|
|
7
|
+
*/
|
|
8
|
+
partition?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Optional AWS account ID. This can be used to specify a particular account.
|
|
11
|
+
*/
|
|
12
|
+
account?: string;
|
|
13
|
+
/**
|
|
14
|
+
* The AWS service (e.g., "iam", "s3", "ec2").
|
|
15
|
+
*/
|
|
16
|
+
service: string;
|
|
17
|
+
/**
|
|
18
|
+
* For regional services, this should be specified.
|
|
19
|
+
*/
|
|
20
|
+
region?: string;
|
|
21
|
+
/**
|
|
22
|
+
* The type of resource being referenced (e.g., "roles", "users", "buckets").
|
|
23
|
+
*
|
|
24
|
+
* Optional for for legacy resource types like s3 buckets or sqs queues where the resource type is not explicitly defined in the ARN.
|
|
25
|
+
*/
|
|
26
|
+
resourceType?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* An interface for persisting AWS resource metadata.
|
|
30
|
+
* Implementations can be backed by S3 or the local file system.
|
|
31
|
+
*/
|
|
32
|
+
export interface AwsIamStore {
|
|
33
|
+
/**
|
|
34
|
+
* Saves metadata for a given AWS resource.
|
|
35
|
+
*
|
|
36
|
+
* If the data is any form of empty content (undefined, null, empty string, empty object, or empty array)
|
|
37
|
+
* then the data will not be persisted and the existing metadata for that key will be deleted instead.
|
|
38
|
+
*
|
|
39
|
+
* @param accountId - The AWS account ID where the resource exists.
|
|
40
|
+
* @param arn - The ARN of the resource.
|
|
41
|
+
* @param metadataType - A key representing the metadata type (e.g., "trust-policy", "inline-policies").
|
|
42
|
+
* @param data - The metadata content to save (as a string or Buffer).
|
|
43
|
+
*/
|
|
44
|
+
saveResourceMetadata(accountId: string, arn: string, metadataType: string, data: string | any): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Retrieves a list of metadata types for a given AWS resource.
|
|
47
|
+
*
|
|
48
|
+
* @param accountId - The AWS account ID where the resource exists.
|
|
49
|
+
* @param arn - The ARN of the resource.
|
|
50
|
+
* @returns An array of metadata types (e.g., ["trust-policy", "inline-policies"]).
|
|
51
|
+
*/
|
|
52
|
+
listResourceMetadata(accountId: string, arn: string): Promise<string[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Retrieves metadata for a given AWS resource.
|
|
55
|
+
*
|
|
56
|
+
* @param accountId - The AWS account ID where the resource exists.
|
|
57
|
+
* @param arn - The ARN of the resource.
|
|
58
|
+
* @param metadataType - The key representing the metadata type.
|
|
59
|
+
* @returns The content of the metadata, as a string.
|
|
60
|
+
*/
|
|
61
|
+
getResourceMetadata<T, D extends T>(accountId: string, arn: string, metadataType: string, defaultValue?: D): Promise<D extends undefined ? T | undefined : T>;
|
|
62
|
+
/**
|
|
63
|
+
* Deletes metadata for a given AWS resource.
|
|
64
|
+
*
|
|
65
|
+
* @param accountId - The AWS account ID where the resource exists.
|
|
66
|
+
* @param arn - The ARN of the resource.
|
|
67
|
+
* @param metadataType - The metadata type to delete.
|
|
68
|
+
*/
|
|
69
|
+
deleteResourceMetadata(accountId: string, arn: string, metadataType: string): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Deletes all data for a given AWS resource
|
|
72
|
+
*
|
|
73
|
+
* @param accountId - The AWS account ID where the resource exists.
|
|
74
|
+
* @param arn - The ARN of the resource.
|
|
75
|
+
*/
|
|
76
|
+
deleteResource(accountId: string, arn: string): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Lists resources based on partition, account, service, region, and resource type.
|
|
79
|
+
*
|
|
80
|
+
* @param accountId - The AWS account ID to list resources for.
|
|
81
|
+
* @param options - the resource type parts to list resources for.
|
|
82
|
+
* @returns A list of resource identifiers (e.g., role names or ARNs).
|
|
83
|
+
*/
|
|
84
|
+
listResources(accountId: string, options: ResourceTypeParts): Promise<string[]>;
|
|
85
|
+
/**
|
|
86
|
+
* Synchronizes the list of stored resources with the provided list.
|
|
87
|
+
* This method can be used to remove resources that no longer exist in the account.
|
|
88
|
+
*
|
|
89
|
+
* @param accountId - The AWS account ID to list resources for.
|
|
90
|
+
* @param options - the resource type parts to sync in advance
|
|
91
|
+
* @param desiredResources - The list of resource arns that should exist.
|
|
92
|
+
*/
|
|
93
|
+
syncResourceList(accountId: string, options: ResourceTypeParts, desiredResources: string[]): Promise<void>;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=AwsIamStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AwsIamStore.d.ts","sourceRoot":"","sources":["../../../src/persistence/AwsIamStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;OAUG;IACH,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GAAG,GAAG,GACjB,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB;;;;;;OAMG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAEvE;;;;;;;OAOG;IACH,mBAAmB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAChC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,CAAC,GACf,OAAO,CAAC,CAAC,SAAS,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAA;IAEnD;;;;;;OAMG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3F;;;;;OAKG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE7D;;;;;;OAMG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAE/E;;;;;;;OAOG;IACH,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,EAC1B,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AwsIamStore.js","sourceRoot":"","sources":["../../../src/persistence/AwsIamStore.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare class FileSystemAdapter {
|
|
2
|
+
writeFile(filePath: string, data: string | Buffer): Promise<void>;
|
|
3
|
+
/**
|
|
4
|
+
* Read the contents of a file. If the file does not exist, return undefined.
|
|
5
|
+
*
|
|
6
|
+
* @param filePath The path to the file to read
|
|
7
|
+
* @returns The contents of the file as a string, or undefined if the file does not exist.
|
|
8
|
+
*/
|
|
9
|
+
readFile(filePath: string): Promise<string | undefined>;
|
|
10
|
+
deleteFile(filePath: string): Promise<void>;
|
|
11
|
+
deleteDirectory(dirPath: string): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* List the contents of a directory. Will return the names of the subdirectories and files without the full path.
|
|
14
|
+
*
|
|
15
|
+
* @param dirPath The path to the directory to list
|
|
16
|
+
* @returns An array of strings representing the names of the subdirectories or files in the specified directory.
|
|
17
|
+
*/
|
|
18
|
+
listDirectory(dirPath: string): Promise<string[]>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=FileSystemAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileSystemAdapter.d.ts","sourceRoot":"","sources":["../../../../src/persistence/file/FileSystemAdapter.ts"],"names":[],"mappings":"AAGA,qBAAa,iBAAiB;IACtB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvE;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAUvD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrD;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAmBxD"}
|