
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus nec neque massa. Integer rutrum luctus nunc, quis aliquet ipsum viverra at. Sed vitae nulla et odio accumsan venenatis id ut mi. Nam sit amet euismod metus. Praesent id ligula eu diam hendrerit pulvinar. Aliquam id nulla vel eros scelerisque faucibus et commodo dui. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis pulvinar magna nulla, a ultrices neque blandit ut. Quisque massa diam, sollicitudin sed enim non, suscipit consectetur erat. Suspendisse fermentum ligula in dignissim finibus. Mauris est velit, viverra gravida vehicula eu, venenatis ut dui. Phasellus convallis nunc quis magna sollicitudin, at feugiat massa venenatis. Ut gravida purus id turpis laoreet, at fringilla massa consequat. Ut libero orci, lobortis imperdiet augue eget, mattis aliquam nunc. Aliquam erat volutpat.

import {
aws_lambda as lambda,
aws_lambda_nodejs as nodejs_lambda,
aws_ec2 as ec2,
aws_elasticloadbalancingv2 as elbv2,
aws_elasticloadbalancingv2_targets as targets,
CfnOutput,
Stack,
StackProps
} from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as path from 'path';
export class AlbLambdaCdkStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
// Creating vpc only with public subnets
const myVpc = new ec2.Vpc(this, 'MyVPC', {
subnetConfiguration: [
{
name: 'VpcSubnetGroup',
subnetType: ec2.SubnetType.PUBLIC,
}
]
});
const securityGroup = new ec2.SecurityGroup(this, 'MyLoadBalancerSG', {
vpc: myVpc,
});
securityGroup.addIngressRule(
ec2.Peer.anyIpv4(),
ec2.Port.tcp(80),
);
const loadBalancer = new elbv2.ApplicationLoadBalancer(this, 'MyLoadBalancer', {
vpc: myVpc,
internetFacing: true,
securityGroup: securityGroup,
});
const lambdaFunction = new nodejs_lambda.NodejsFunction(this, "LambdaFunction", {
runtime: lambda.Runtime.NODEJS_14_X,
entry: path.join(__dirname, `/../lambda/index.ts`),
handler: "handler",
});
const listener = loadBalancer.addListener('MyLoadBalancerListener', { port: 80 });
listener.addTargets('MyLoadBalancerTargets', {
targets: [new targets.LambdaTarget(lambdaFunction)],
healthCheck: {
enabled: true,
}
});
// Output
new CfnOutput(this, 'ALBUrl', {
value: `http://${loadBalancer.loadBalancerDnsName}`
});
}
}