@cloud-copilot/iam-collect
Version:
Collect IAM information from AWS Accounts
61 lines • 2.51 kB
JavaScript
;
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