Initial jenkins version
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import {
|
||||
Stack,
|
||||
aws_ec2 as ec2,
|
||||
aws_rds as rds,
|
||||
StackProps,
|
||||
RemovalPolicy,
|
||||
} from 'aws-cdk-lib';
|
||||
import { Port } from 'aws-cdk-lib/aws-ec2';
|
||||
import { Construct } from 'constructs';
|
||||
import { BuildConfig } from '../utils/build-config';
|
||||
import { ClusterInstance } from 'aws-cdk-lib/aws-rds';
|
||||
|
||||
export class MccDBInfraStack extends Stack {
|
||||
public readonly mccDB: rds.DatabaseCluster;
|
||||
public readonly mccDBSecurityGroup: ec2.SecurityGroup;
|
||||
|
||||
credentials = rds.Credentials.fromGeneratedSecret('mccAdmin');
|
||||
|
||||
constructor(scope: Construct, id: string, buildConfig: BuildConfig, props: StackProps) {
|
||||
super(scope, id, props);
|
||||
|
||||
const vpc = ec2.Vpc.fromLookup(
|
||||
this,
|
||||
`${buildConfig.Environment}-${buildConfig.ApplicationShortName}MccVPC`,
|
||||
{
|
||||
vpcId: buildConfig.Parameters.VPC,
|
||||
}
|
||||
);
|
||||
|
||||
const dbSecurityGroup = new ec2.SecurityGroup(
|
||||
this,
|
||||
`${buildConfig.Environment}${buildConfig.ApplicationShortName}MccDBSecurityGroup`,
|
||||
{
|
||||
vpc: vpc,
|
||||
securityGroupName: `${buildConfig.Environment}-${buildConfig.ApplicationShortName}DBSecurityGroup`,
|
||||
}
|
||||
);
|
||||
|
||||
const mccDB = new rds.DatabaseCluster(this, `${buildConfig.Environment}${buildConfig.ApplicationShortName}MccDB`, {
|
||||
engine: rds.DatabaseClusterEngine.auroraPostgres({
|
||||
version: rds.AuroraPostgresEngineVersion.VER_17_4,
|
||||
}) ,
|
||||
vpc,
|
||||
writer: ClusterInstance.serverlessV2('writer') ,
|
||||
credentials: this.credentials,
|
||||
defaultDatabaseName: 'mccdb',
|
||||
securityGroups: [dbSecurityGroup],
|
||||
serverlessV2MinCapacity: 0,
|
||||
serverlessV2MaxCapacity: 64,
|
||||
enableDataApi: true,
|
||||
clusterIdentifier: `${buildConfig.Environment}-${buildConfig.ApplicationShortName}-mccdb`,
|
||||
removalPolicy: RemovalPolicy.RETAIN
|
||||
});
|
||||
|
||||
const lambdaSecurityGroup = new ec2.SecurityGroup(
|
||||
this,
|
||||
`${buildConfig.Environment}${buildConfig.ApplicationShortName}MccDBLambdaSecurityGroup`,
|
||||
{
|
||||
vpc: vpc,
|
||||
securityGroupName: `${buildConfig.Environment}-${buildConfig.ApplicationShortName}DBLambdaSecurityGroup`,
|
||||
}
|
||||
);
|
||||
|
||||
dbSecurityGroup.addIngressRule(
|
||||
lambdaSecurityGroup,
|
||||
Port.tcp(mccDB.clusterEndpoint.port),
|
||||
'Allow connection from Lambda Function to DB'
|
||||
);
|
||||
|
||||
dbSecurityGroup.addIngressRule(
|
||||
ec2.Peer.ipv4('10.0.0.0/8'),
|
||||
Port.tcp(mccDB.clusterEndpoint.port),
|
||||
'Allow connection from internal network'
|
||||
);
|
||||
|
||||
this.mccDB = mccDB;
|
||||
this.mccDBSecurityGroup = lambdaSecurityGroup;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user