UNPKG

@cloud-copilot/iam-collect

Version:

Collect IAM information from AWS Accounts

132 lines 6.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AwsConfigClientPool = void 0; const client_config_service_1 = require("@aws-sdk/client-config-service"); const auth_js_1 = require("../aws/auth.js"); const ClientPool_js_1 = require("../aws/ClientPool.js"); const coreAuth_js_1 = require("../aws/coreAuth.js"); const AbstractClientPool_js_1 = require("../customClients/AbstractClientPool.js"); const AwsConfigAccountClient_js_1 = require("./clients/AwsConfigAccountClient.js"); const AwsConfigApiGatewayClient_js_1 = require("./clients/AwsConfigApiGatewayClient.js"); const AwsConfigBackupClient_js_1 = require("./clients/AwsConfigBackupClient.js"); const AwsConfigDynamoDBClient_js_1 = require("./clients/AwsConfigDynamoDBClient.js"); const AwsConfigEC2Client_js_1 = require("./clients/AwsConfigEC2Client.js"); const AwsConfigEcrClient_js_1 = require("./clients/AwsConfigEcrClient.js"); const AwsConfigEfsClient_js_1 = require("./clients/AwsConfigEfsClient.js"); const AwsConfigEventBridgeClient_js_1 = require("./clients/AwsConfigEventBridgeClient.js"); const AwsConfigGlueClient_js_1 = require("./clients/AwsConfigGlueClient.js"); const AwsConfigIamClient_js_1 = require("./clients/AwsConfigIamClient.js"); const AwsConfigKafkaClient_js_1 = require("./clients/AwsConfigKafkaClient.js"); const AwsConfigKinesisClient_js_1 = require("./clients/AwsConfigKinesisClient.js"); const AwsConfigKmsClient_js_1 = require("./clients/AwsConfigKmsClient.js"); const AwsConfigLambdaClient_js_1 = require("./clients/AwsConfigLambdaClient.js"); const AwsConfigOpenSearchClient_js_1 = require("./clients/AwsConfigOpenSearchClient.js"); const AwsConfigOrganizationsClient_js_1 = require("./clients/AwsConfigOrganizationsClient.js"); const AwsConfigS3Client_js_1 = require("./clients/AwsConfigS3Client.js"); const AwsConfigS3ControlClient_js_1 = require("./clients/AwsConfigS3ControlClient.js"); const AwsConfigSecretsManagerClient_js_1 = require("./clients/AwsConfigSecretsManagerClient.js"); const AwsConfigSNSClient_js_1 = require("./clients/AwsConfigSNSClient.js"); const AwsConfigSQSClient_js_1 = require("./clients/AwsConfigSQSClient.js"); const fullySupportedServices = new Set([ 'backup', 'ec2', 'ecr', 'elasticfilesystem', 'es', 'events', 'iam', 'kafka', 'kms', 'sns', 'sqs' ]); /** * AWS Config-based client pool using the new abstract base classes */ class AwsConfigClientPool extends AbstractClientPool_js_1.AbstractClientPool { options; configClient; aggregatorName; configCredentials; /** * Constructor * * @param options Options for the Config client pool */ constructor(options) { super(); this.options = options; } async init() { this.aggregatorName = this.options.aggregatorName; const authConfig = this.options.auth; const defaultCredentials = await (0, coreAuth_js_1.getNewInitialCredentials)(authConfig, { phase: 'initial AwsConfig credentials' }); let credentials = defaultCredentials; if (this.options.accountId || authConfig?.role) { const targetAccountId = this.options.accountId || credentials.accountId; credentials = await (0, auth_js_1.getCredentials)(targetAccountId, authConfig); } this.configCredentials = credentials; this.configClient = ClientPool_js_1.AwsClientPool.defaultInstance.client(client_config_service_1.ConfigServiceClient, credentials, this.options.region, undefined); } requiresAwsCredentials() { return false; } /** * Register the default supported Config-based clients */ registerDefaultClients() { this.registerClient(AwsConfigAccountClient_js_1.AwsConfigAccountClient); this.registerClient(AwsConfigApiGatewayClient_js_1.AwsConfigApiGatewayClient); this.registerClient(AwsConfigBackupClient_js_1.AwsConfigBackupClient); this.registerClient(AwsConfigDynamoDBClient_js_1.AwsConfigDynamoDBClient); this.registerClient(AwsConfigEC2Client_js_1.AwsConfigEC2Client); this.registerClient(AwsConfigEcrClient_js_1.AwsConfigEcrClient); this.registerClient(AwsConfigEfsClient_js_1.AwsConfigEfsClient); this.registerClient(AwsConfigEventBridgeClient_js_1.AwsConfigEventBridgeClient); this.registerClient(AwsConfigGlueClient_js_1.AwsConfigGlueClient); this.registerClient(AwsConfigIamClient_js_1.AwsConfigIamClient); this.registerClient(AwsConfigKafkaClient_js_1.AwsConfigKafkaClient); this.registerClient(AwsConfigKinesisClient_js_1.AwsConfigKinesisClient); this.registerClient(AwsConfigKmsClient_js_1.AwsConfigKmsClient); this.registerClient(AwsConfigLambdaClient_js_1.AwsConfigLambdaClient); this.registerClient(AwsConfigOpenSearchClient_js_1.AwsConfigOpenSearchClient); this.registerClient(AwsConfigOrganizationsClient_js_1.AwsConfigOrganizationsClient); this.registerClient(AwsConfigS3Client_js_1.AwsConfigS3Client); this.registerClient(AwsConfigS3ControlClient_js_1.AwsConfigS3ControlClient); this.registerClient(AwsConfigSecretsManagerClient_js_1.AwsConfigSecretsManagerClient); this.registerClient(AwsConfigSNSClient_js_1.AwsConfigSNSClient); this.registerClient(AwsConfigSQSClient_js_1.AwsConfigSQSClient); } /** * Get custom client context for Config-based implementations */ getClientContext(ClientType, credentials, region, endpoint) { return { configClient: this.configClient, aggregatorName: this.aggregatorName, configCredentials: this.configCredentials }; } isSyncSupported(service, syncName, region) { const fullySupported = fullySupportedServices.has(service); if (fullySupported) { return true; } if (service === 'lambda') { return syncName === 'lambdaFunctions'; } if (service === 's3') { return ['generalPurposeBuckets', 'accessPoints', 'accountBpa'].includes(syncName); } if (service === 's3express') { return syncName === 'directoryBuckets'; } // By default, nothing is supported return false; } } exports.AwsConfigClientPool = AwsConfigClientPool; //# sourceMappingURL=AwsConfigClientPool.js.map