UNPKG

@cloud-copilot/iam-collect

Version:

Collect IAM information from AWS Accounts

61 lines 2.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AwsConfigEC2Client = void 0; const client_ec2_1 = require("@aws-sdk/client-ec2"); const AbstractClient_js_1 = require("../../customClients/AbstractClient.js"); const AwsConfigClientContext_js_1 = require("../AwsConfigClientContext.js"); const awsConfigUtils_js_1 = require("../awsConfigUtils.js"); /** * AWS Config-based EC2 client implementation */ class AwsConfigEC2Client extends AbstractClient_js_1.AbstractClient { static clientName = client_ec2_1.EC2Client.name; constructor(options, customContext) { super(options, customContext); } /** * Register all EC2 command implementations */ registerCommands() { this.registerCommand(AwsConfigDescribeVpcEndpointsCommand); } } exports.AwsConfigEC2Client = AwsConfigEC2Client; /** * Config-based implementation of EC2 DescribeVpcEndpointsCommand * Retrieves VPC endpoint information including endpoint policies from AWS Config */ const AwsConfigDescribeVpcEndpointsCommand = (0, AwsConfigClientContext_js_1.awsConfigCommand)({ command: client_ec2_1.DescribeVpcEndpointsCommand, execute: async (input, context) => { let query = ` SELECT configuration.vpcEndpointId, configuration.vpcEndpointType, configuration.serviceName, configuration.policyDocument WHERE resourceType = 'AWS::EC2::VPCEndpoint' AND awsRegion = '${context.region}' AND accountId = '${context.accountId}' AND ${awsConfigUtils_js_1.resourceStatusWhereClause} `; const results = await (0, awsConfigUtils_js_1.executeConfigQuery)(query, context); // Transform Config results to match AWS SDK format with only essential fields const vpcEndpoints = results.map((resultString) => { const { configItem } = (0, awsConfigUtils_js_1.parseConfigItem)(resultString); const config = configItem.configuration || {}; return { VpcEndpointId: config.vpcEndpointId, VpcEndpointType: config.vpcEndpointType, ServiceName: config.serviceName, PolicyDocument: config.policyDocument // The endpoint policy as a string }; }); return { VpcEndpoints: vpcEndpoints, NextToken: undefined // Config doesn't support pagination in this context }; } }); //# sourceMappingURL=AwsConfigEC2Client.js.map