
亚马逊云科技近日为其云开发工具包(CDK)推出了一项新功能,允许云工程师安全地重构基础设施代码;在重命名构造体和重组应用时,能够保留原有云资源。
这项重构功是为解决一个亚马逊云科技的长期痛点:以前,任何因重命名或移动构造体导致的资源逻辑 ID 变更,都会迫使 CloudFormation 先删除旧资源后再创建新资源。这种破坏性流程对于数据库等有状态的资源而言,常常会导致数据丢失和服务中断,致使许多开发者完全不敢进行重构。
而现在,借助新的 CDK 重构命令,云工程师能够检测、审查、确认并安全地应用重构更改,而无需替换资源。亚马逊云科技开发团队在官方博客中写道:
该功能基于新发布的 CloudFormation 重构能力构建,但 CDK 会自动计算所需的映射关系,为开发者提供抽象层,从而专注于代码而非资源配置。
目前该功能仍处于预发布阶段,需通过 --unstable=refactor
标志启用。想要尝鲜的开发者还需重新引导 CDK 环境以获取必要权限。

来源:AWS DevOps 及开发者生产力博文
亚马逊云科技表示,这项功可让开发者能够将面向对象原则应用于基础设施代码,提升可维护性,最终构建出更健壮、架构更优美的应用,同时也无需担心破坏性部署。
不过 CyberArk 首席软件架构师 Ran Isenberg 在领英上提醒道:
总体而言这是很重要功能,但建议不要频繁使用——最好只用在没有更优解决方案的场景。
虽然 AWS CDK 的重构功能提供了一种重构手段,但其他的基础设施即代码(IaC)工具处理类似任务的方式各不相同。例如,Pulumi 依赖于别名概念这一明确的属性,云工程师可以将其添加到资源定义中,从而让 Pulumi 更新现有资源的身份,而不是进行替换。
另一款 IaC 产品 Terraform,则采用了一种更手动的声明式的方法,即使用 moved 代码块。云工程师将这种代码块添加到他们的 HCL 配置中,以明确地将旧的资源地址映射到新的地址,从而确保状态文件得到更新,而不会销毁底层资源。最后,Bicep 作为一款编译成 ARM 模板的无状态工具并没有专用的重构命令,它的重构是通过其原生部署模型来处理的,该模型依赖 Azure Resource Manager 来管理资源的生命周期,不需要本地状态文件。
最后,关于重构功能的更多详细信息可参见文档页面。
原文链接:
https://www.infoq.com/news/2025/09/aws-cdk-refactor-safe-iac/
评论