
【免费下载链接】aws-cdk-examplesExample projects using the AWS CDK项目地址https://gitcode.com/gh_mirrors/aw/aws-cdk-examples点击查看免费下载本文以 aws-cdk-examples 仓库中 java/classic-load-balancer 示例为主线完整讲解如何用 Java 编写 AWS CDK 程序在一个 VPC 内创建由 Auto Scaling 组托管的 EC2 实例与 Classic Load Balancer经典负载均衡器并打通「Maven 编译 → CDK 合成 → 部署到账户」的完整链路。读完本文你将掌握 Java 版 CDK 应用的入口结构、cdk.json的运行机制以及cdk ls / synth / deploy / diff四个核心 Toolkit 命令的实战用法。示例概览CLB 与 ASG 的组合架构该示例在仓库的 Java 示例目录 中定位为“Using an AutoScalingGroup with a Classic Load Balancer”即在共享 VPC 内同时创建两个核心资源AutoScalingGroupASG承载后端计算能力使用突发型 micro 规格的 EC2 实例镜像采用 Amazon Linux AMIClassic Load BalancerCLB面向公网internet-facing监听 80 端口将流量分发到 ASG 中的实例并通过 80 端口做健康检查。两者的关系由 CDK 代码显式“挂钩”负载均衡器把 ASG 作为目标挂载CDK 会自动为 ASG 与 CLB 建立正确的关联注册目标、健康检查、安全组放行等。仓库中该示例被标记为Stable 稳定示例无需任何额外基础设施前置条件即可构建部署。整体工程只有 4 个文件结构非常清晰cdk.jsonCDK Toolkit 的应用入口指令pom.xmlMaven 构建与依赖管理ClassicLoadBalancerApp.java程序入口AppClassicLoadBalancerStack.java基础设施定义Stack。工程骨架入口类与 cdk.json入口类 ClassicLoadBalancerAppJava 版 CDK 应用的入口是一个标准的main方法代码极简package software.amazon.awscdk.examples; import software.amazon.awscdk.App; public class ClassicLoadBalancerApp { public static void main(final String[] args) { App app new App(); new ClassicLoadBalancerStack(app, cdk-classic-load-balancer-example); app.synth(); } }它做了三件事创建App根构造节点实例化ClassicLoadBalancerStack并指定该栈的 ID 为cdk-classic-load-balancer-example调用app.synth()触发模板合成生成 CloudFormation 模板。cdk.json告诉 Toolkit 如何执行 Java 程序原文档特别强调cdk.json 位于仓库根目录下其中包含了 CDK Toolkit 执行该程序的方式说明。它的内容只有一行关键配置{ app: mvn exec:java -Dexec.mainClasssoftware.amazon.awscdk.examples.ClassicLoadBalancerApp }app字段告诉 CDK Toolkit运行本应用时执行mvn exec:java并指定主类为software.amazon.awscdk.examples.ClassicLoadBalancerApp。这意味着每次执行cdk命令时Toolkit 都会以 Maven 方式启动 JVM 并运行入口类修改 Java 代码后无需手动重新编译Maven 会在exec:java执行过程中自动重编译原文档明确说明“Maven will recompile as needed”随后即可照常使用cdk ls / synth / deploy / diff等 Toolkit 命令。核心 Stack 源码逐行拆解ClassicLoadBalancerStack.java 是全部基础设施逻辑所在按顺序定义了 5 个环节。1. 创建 VPCVpc vpc new Vpc(this, VPC);使用默认配置创建 VPC。默认构造会在该栈所属账户/区域创建一套包含公有与私有子网的标准 VPC默认最多两个可用区ASG 与 CLB 都挂载在这套共享 VPC 中。2. 创建 AutoScalingGroupAutoScalingGroup asg AutoScalingGroup.Builder.create(this, ASG) .vpc(vpc) .instanceType(InstanceType.of(InstanceClass.BURSTABLE2, InstanceSize.MICRO)) .machineImage(new AmazonLinuxImage()) .build();.vpc(vpc)将 ASG 放入上一步创建的 VPC.instanceType(...)指定实例类型为突发型系列BURSTABLE2的MICRO规格即 t2.micro属于低成本入门规格.machineImage(new AmazonLinuxImage())使用 Amazon Linux 的当前可用 AMI 作为机器镜像。注意这里没有显式设置desiredCapacity等容量参数CDK 会按 ASG 默认行为创建实例默认 desired 为 1min 为 1。3. 创建 Classic Load BalancerHealthCheck healthCheck new HealthCheck.Builder().port(80).build(); LoadBalancer lb LoadBalancer.Builder.create(this, LB) .vpc(vpc) .internetFacing(Boolean.TRUE) .healthCheck(healthCheck) .build();.internetFacing(Boolean.TRUE)声明为公网面向型负载均衡器CDK 会为其分配公网 DNS 名称并放置在公有子网.healthCheck(...)基于 80 端口的 TCP 健康检查用于判定后端实例是否存活这里创建的LoadBalancer来自software.amazon.awscdk.services.elasticloadbalancing模块即Classic Load Balancer经典负载均衡器区别于 v2 的elasticloadbalancingv2ALB/NLB。4. 挂载目标与开放监听器lb.addTarget(asg); ListenerPort listenerPort lb.addListener(LoadBalancerListener.builder().externalPort(80).build()); listenerPort.getConnections().allowDefaultPortFromAnyIpv4(Open to the world);lb.addTarget(asg)把 ASG 整体注册为负载均衡的目标。CDK 会自动在 CLB 与 ASG 之间建立注册关系并配置好实例健康检查与自动扩缩容所需的联动lb.addListener(...)为负载均衡器添加外部端口为 80 的监听器返回对应的ListenerPort对象listenerPort.getConnections().allowDefaultPortFromAnyIpv4(Open to the world)以一句描述性的说明Open to the world允许任意 IPv4 访问该监听器的默认端口80等价于在安全组上放行 80 端口入站流量。至此一套「互联网用户 → CLB:80 → ASG 中的 Amazon Linux 实例」的完整链路即定义完毕。构建mvn compile 与依赖管理原文档的Building章节给出了本示例的构建方式在示例目录下执行mvn compileMaven 会下载编译 Java 代码所需的全部依赖。pom.xml 中的关键配置如下CDK 核心依赖software.amazon.awscdk:aws-cdk-lib版本范围声明为[2.262.0,3.0.0)即允许 2.262.0 及以上、小于 3.0.0 的 2.x 版本同时依赖software.constructs:constructs[10.5.0,11.0.0)编译插件maven-compiler-plugin3.8.1source与target均设为1.8Java 8打包插件maven-assembly-plugin3.1.0绑定到package阶段生成jar-with-dependencies可执行胖包测试依赖junit4.13.1 与hamcrest-library1.3scope 为test。一个值得注意的细节pom.xml 的 assembly 插件 manifest 中mainClass写的是com.amazonaws.cdk.examples.ClassicLoadBalancerApp而实际类位于software.amazon.awscdk.examples包下源码与 cdk.json 均如此。也就是说实际运行时以 cdk.json 中mvn exec:java -Dexec.mainClass...的配置为准打包 manifest 中的这一差异并不影响 CDK 工作流。CDK Toolkit 工作流原文档CDK Toolkit章节指出你可以用 IDE 编写代码和单元测试但合成synthesize与部署deploy栈必须通过 CDK Toolkit 完成。在示例根目录下依次执行$ cdk ls list all stacks in this programcdk ls列出当前程序中定义的所有栈本例应输出cdk-classic-load-balancer-example。$ cdk synth cloudformation templatecdk synth执行app.synth()的等价流程把 Java 代码合成 CloudFormation 模板并输出到cdk.out目录可用于部署前人工审查将要创建的资源。$ cdk deploy deploy stack to your accountcdk deploy将栈部署到当前 AWS 账户/区域需提前完成 AWS 凭证配置与bootstrap。由于该栈是 Stable 示例无额外前置依赖可直接部署。$ cdk diff diff against deployed stackcdk diff对比已部署栈与当前代码展示将要发生的变更是迭代开发与代码评审阶段的常用命令。此外部署完毕后如需清理资源可执行$ cdk destroy销毁该栈创建的全部 AWS 资源避免持续产生费用。部署与验证在示例目录执行mvn compile确认代码可编译或直接执行cdk deployMaven 会自动重编译执行cdk deploy等待 CloudFormation 创建 VPC、ASG、CLB 及其安全组由于该示例未定义CfnOutput输出部署完成后可从 AWS 管理控制台的EC2 → Load Balancers页面查看 Classic Load Balancer 的公网 DNS 名称使用浏览器或curl http://CLB-DNS访问 80 端口流量经 CLB 分发到 ASG 内的 Amazon Linux 实例验证完成后执行cdk destroy清理全部资源。小结通过这个 Java 示例可以掌握一套可复用的 CDK Java 开发范式App入口 Stack定义 cdk.json的mvn exec:java入口 cdk命令行工作流。核心代码仅约 30 行却完整刻画了「VPC 内的 ASG 后端 公网 Classic Load Balancer 80 端口监听 健康检查 全网放行」这一经典架构。在此基础上替换实例规格、调整监听端口、补充CfnOutput输出即可快速扩展到生产场景。仓库中的 Go 版本、Python 版本、TypeScript 版本 与 C# 版本 提供了同一架构的多语言对照实现可作为跨语言学习的参考。赞分享【免费下载链接】aws-cdk-examplesExample projects using the AWS CDK项目地址https://gitcode.com/gh_mirrors/aw/aws-cdk-examples点击查看免费下载相关推荐使用 AWS CDKC/.NET构建 Classic Load Balancer 与 Auto Scaling Group 集成示例使用 AWS CDKC /.NET构建 Classic Load Balancer 与 Auto Scaling Group 集成示例 本篇技术指南以 aw使用 AWS CDK 构建 Classic Load Balancer 与 Auto Scaling Group 负载均衡示例TypeScript使用 AWS CDK 构建 Classic Load Balancer 与 Auto Scaling Group 负载均衡示例TypeScript 导读 本aws-cdk-examples 实战使用 Java 与 AWS CDK 构建 Application Load Balancer Auto Scaling Group 高可用架构aws cdk examples 实战使用 Java 与 AWS CDK 构建 Application Load Balancer Auto Scalin上一篇飞牛影视PC版(fntv-electron)5分钟快速上手的终极桌面影视体验指南下一篇StofDoctrineExtensionsBundle的Sluggable扩展创建SEO友好URL的简单方法创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考