mirror of
https://github.com/autistic-symposium/backend-and-orchestration-toolkit.git
synced 2025-06-08 15:02:55 -04:00
75 lines
2.7 KiB
TypeScript
75 lines
2.7 KiB
TypeScript
import cdk = require("@aws-cdk/core");
|
|
import ec2 = require("@aws-cdk/aws-ec2");
|
|
import msk = require("@aws-cdk/aws-msk");
|
|
|
|
|
|
interface MSKStackProps extends cdk.StackProps {
|
|
vpc: ec2.IVpc;
|
|
}
|
|
export class MskClusterStack extends cdk.Stack {
|
|
private vpc: ec2.IVpc;
|
|
|
|
constructor(scope: cdk.Construct, id: string, props?: MSKStackProps) {
|
|
super(scope, id, props);
|
|
const current_env = this.node.tryGetContext("env.type");
|
|
|
|
//****************************** Context variables **************************************//
|
|
const clusterName = this.node.tryGetContext("msk.DevMskCluster");
|
|
const clusterTag = this.node.tryGetContext("msk.mskClusterTag");
|
|
const brokerNodeGroupBrokerAzDistribution = this.node.tryGetContext("msk.brokerNodeGroupBrokerAzDistribution");
|
|
const brokerNodeGroupEBSVolumeSize = this.node.tryGetContext("msk.brokerNodeGroupEBSVolumeSize");
|
|
const brokerNodeGroupInstanceType = this.node.tryGetContext("msk.brokerNodeGroupInstanceType");
|
|
const brokerPort = this.node.tryGetContext("msk.brokerPort");
|
|
const kafkaVersion = this.node.tryGetContext("msk.kafkaVersion");
|
|
const numberOfBrokerNodes = this.node.tryGetContext("msk.numberOfBrokerNodes");
|
|
const enhancedMonitoring = this.node.tryGetContext("msk.enhancedMonitoring");
|
|
|
|
//**************************************** VPC
|
|
if (props)
|
|
this.vpc = props.vpc;
|
|
else
|
|
this.vpc = ec2.Vpc.fromLookup(this, current_env+"Vpc", {
|
|
vpcName: "VPCStack/"+current_env+"Vpc"
|
|
});
|
|
|
|
//**************************************** SG
|
|
const description = "Allow access to "+current_env+" MSK Cluster";
|
|
const SecurityGroup = new ec2.SecurityGroup(
|
|
this,
|
|
current_env+"MskClusterSG",
|
|
{
|
|
vpc: this.vpc,
|
|
securityGroupName: current_env+"MskClusterSG",
|
|
description: description,
|
|
allowAllOutbound: true
|
|
}
|
|
);
|
|
SecurityGroup.addIngressRule(
|
|
ec2.Peer.anyIpv4(),
|
|
ec2.Port.tcp(brokerPort),
|
|
description
|
|
);
|
|
|
|
//******************************* MSK Cluster **************************//
|
|
const cluster = new msk.CfnCluster(this, "MskCluster", {
|
|
brokerNodeGroupInfo: {
|
|
clientSubnets: this.vpc.privateSubnets.map(x => x.subnetId),
|
|
instanceType: brokerNodeGroupInstanceType,
|
|
brokerAzDistribution: brokerNodeGroupBrokerAzDistribution,
|
|
storageInfo: {
|
|
ebsStorageInfo: {
|
|
volumeSize: brokerNodeGroupEBSVolumeSize
|
|
}
|
|
}
|
|
},
|
|
clusterName: clusterName,
|
|
kafkaVersion: kafkaVersion,
|
|
numberOfBrokerNodes: numberOfBrokerNodes,
|
|
enhancedMonitoring: enhancedMonitoring,
|
|
tags: {
|
|
name: current_env+clusterTag,
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|