Deploying a MicroProfile / Quarkus Application as AWS Lambda integrated with Application Load Balancer (ALB / ELB) 📎
import software.amazon.awscdk.services.ec2.Vpc;
//...
var vpc = Vpc.Builder.create(this, "VPC")
        .cidr("10.0.0.0/16")
        .enableDnsHostnames(true)
        .enableDnsSupport(true)
        .natGateways(0)
        .maxAzs(2)
    .build();
...a load balancer:
var loadBalancer = ApplicationLoadBalancer.Builder.create(this, "ELB")
                                        .internetFacing(true)
                                        .loadBalancerName(loadBalancerName)
                                        .vpc(vpc)
                                    .build();         
...and a function:
import software.amazon.awscdk.services.lambda.Architecture;
import software.amazon.awscdk.services.lambda.Code;
import software.amazon.awscdk.services.lambda.Function;
import software.amazon.awscdk.services.lambda.Runtime;
//...
var function = Function.Builder.create(this, functionName)
            .runtime(Runtime.JAVA_11)
            .architecture(Architecture.ARM_64)
            .code(Code.fromAsset("../lambda/target/function.zip"))
            .handler(functionHandler)
            .memorySize(memory)
            .functionName(functionName)
            .environment(configuration)
            .timeout(Duration.seconds(timeout))
            .reservedConcurrentExecutions(maximumConcurrentExecution)
            .build();
The Lambda function is integrated with the ALB as a HTTP-listener's target:
import software.amazon.awscdk.services.elasticloadbalancingv2.AddApplicationTargetsProps;
import software.amazon.awscdk.services.elasticloadbalancingv2.BaseApplicationListenerProps;
import software.amazon.awscdk.services.elasticloadbalancingv2.HealthCheck;
import software.amazon.awscdk.services.elasticloadbalancingv2.targets.LambdaTarget;
var lambdaTarget = new LambdaTarget(function);
var listener = loadBalancer.addListener("Http", BaseApplicationListenerProps.builder()
                                                                    .port(80)
                                                                    .build()); 
                                                                    
listener.addTargets("Lambda", AddApplicationTargetsProps.builder()
                                .targets(List.of(lambdaTarget))
                                .healthCheck(HealthCheck.builder()
                                                .enabled(true)
                                                .build())
                                .build());    
The entire code ships with the AWS Quarkus Lambda CDK template.
Checkout the deployment and walk-through: