宣布 CloudFormation IDE 体验:在您的 IDE 中进行端到端开发
如果您开发过 AWS CloudFormation 模板,您一定熟悉这个流程:在 IDE(集成开发环境)中编写 YAML(YAML Ain’t Markup Language),切换到 AWS 管理控制台进行验证,跳转到文档页面确认属性名称,然后在终端运行 CFN Lint(CloudFormation Linter),部署并等待,最后回到控制台排查故障。这种在 IDE、AWS 控制台、文档页面和验证工具之间不断的上下文切换,割裂了您的工作流,严重影响了工作效率。本应只需 30 分钟的任务,常常会拉长到数小时的迭代周期。
今天,我们兴奋地推出 CloudFormation IDE 体验,这是一个全面的解决方案,将整个 CloudFormation 开发生命周期都带入了您的 IDE。不再需要上下文切换,不再有割裂的工作流。从编写到部署,只有一个统一的、智能的开发体验。
在本文中,您将了解 CloudFormation IDE 体验如何通过智能编写、实时验证、AWS 集成等功能来转变您的工作流程。
什么是 CloudFormation IDE 体验?
CloudFormation IDE 体验重新构想了您构建基础设施即代码的方式,它创建了一个完全在 IDE 内部的端到端开发循环。与通用的 YAML 或 JSON 编辑器不同,这是一个专为基础设施开发人员构建的、以 CloudFormation 为核心的解决方案。
该解决方案覆盖了完整的生命周期:从具有理解 CloudFormation 语义的智能代码补全和导航功能的智能编写,到能在部署前发现问题的实时多层验证。它提供直接的 AWS 集成,用于无缝的资源导入和堆栈可见性;监控您的模板与已部署资源之间的配置漂移;并包括能够防止常见部署失败的服务器端预部署检查。
结果是?一个能像您的 IDE 理解应用程序代码一样,深度理解您基础设施代码的开发环境。
核心功能
使用 CFN Init 快速项目设置
CFN Init 通过创建带有环境配置的结构化 CloudFormation 项目来简化项目设置,只需几秒钟。从命令面板运行“CFN Init:初始化项目”,配置您的环境(开发、预发布、生产),并将每个环境与一个 AWS 配置文件关联。
CloudFormation 资源管理器会显示您的环境,让您只需单击一下即可在它们之间切换。每个环境维护自己的部署设置和参数值,从而消除了手动配置,并确保在您的基础设施生命周期中实现一致的部署。
通过智能代码补全实现智能编写
IDE 理解 CloudFormation 语义,并在您键入时提供上下文感知的建议。只有必需的属性会自动出现,而可选属性会在悬停时显示。因此,当您向 EC2 VPC 资源添加 Properties 部分时,不会自动出现任何内容,因为它没有必需的属性。然而,当您创建子网时,VpcId 会立即出现,因为它是必需的。
当您使用 !GetAtt 或 !Ref 时,IDE 确切知道哪些属性和资源可用。诸如跳转到逻辑 ID 定义和悬停提示等导航功能让您无需丢失上下文即可探索复杂的模板。IDE 还提供对 CloudFormation 内部函数和伪参数的完整支持。
多层验证系统
IDE 在多个级别提供全面的验证:
- 静态验证(实时)
- CloudFormation Guard 集成:使用 AWS 安全支柱规则进行安全和合规性检查。例如,它会自动标记不安全的配置,例如子网上的
MapPublicIpOnLaunch: true。 - CFN Lint 集成:高级语法和逻辑验证,包括重叠 CIDR 块检测、资源依赖项验证以及超越基本模式验证的属性检查。
- CloudFormation Guard 集成:使用 AWS 安全支柱规则进行安全和合规性检查。例如,它会自动标记不安全的配置,例如子网上的
- 交互式错误解决
- 当错误发生时,IDE 不仅仅是高亮显示它们,还会帮助您修复它们。上下文错误消息解释了什么错了以及为什么重要,而一键快速修复功能可以自动纠正常见问题,如缺少必需属性或无效的引用格式。如果您引用了一个不存在的资源,IDE 会从您的模板中建议有效的替代项。如果您用
!GetAtt引用了一个无效的属性,IDE 会立即显示该资源类型实际可用的属性。
- 当错误发生时,IDE 不仅仅是高亮显示它们,还会帮助您修复它们。上下文错误消息解释了什么错了以及为什么重要,而一键快速修复功能可以自动纠正常见问题,如缺少必需属性或无效的引用格式。如果您引用了一个不存在的资源,IDE 会从您的模板中建议有效的替代项。如果您用
AWS 资源集成 (CCAPI)
使用 Cloud Control API (CCAPI) 直接将现有 AWS 资源导入到您的模板中。在 IDE 内浏览实时资源并查看 AWS 账户中的所有 CloudFormation 堆栈。只需单击一下,即可将资源配置直接拉取到您的模板中,并附带准确的属性值。这能将现有基础设施转换为基础设施即代码,无需手动重建或切换到控制台查找属性值。
服务器端验证
在部署之前,IDE 会通过 AWS 的智能验证服务执行全面的服务器端验证,该服务会根据实际部署模式分析您的 CloudFormation 模板,并捕获静态分析无法检测到的问题。
AWS 的智能验证服务使用 AWS 托管的钩子,在执行前在三个类别中分析您的变更集。增强的模板验证涵盖 CFN Lint 的盲点,例如转换和参数值。主标识符冲突检测会在您尝试部署之前,查找具有相同标识符的现有资源。资源状态验证会检查资源准备情况,确保例如在尝试删除 Amazon Simple Storage Service (S3) 存储桶之前它们是空的。
此验证基于对 CloudFormation 顶级故障模式的分析,帮助您在问题导致回滚或失败状态之前将其捕获。
开始使用
开始使用 CloudFormation IDE 体验非常简单: 先决条件:
- 安装支持 CloudFormation 扩展的 IDE,例如 Visual Studio Code、Kiro。
- 为您的平台下载 CloudFormation 扩展(可通过 AWS Toolkit 获取)。
- 按照标准的 VS Code 扩展安装过程安装该扩展。
无需复杂的依赖管理或模式更新——所有配置和更新都是自动处理的。
让我们看看它是如何工作的
让我们通过一个实践示例来演示 IDE 体验的实际运作。我们将构建一个简单的 Amazon Virtual Private Cloud (Amazon VPC) 基础设施,包含子网和一个 S3 存储桶。
设置您的项目
首先初始化一个新的 CloudFormation 项目。打开命令面板,运行“CFN Init: Initialize Project”,选择您的项目位置并设置环境。对于此示例,创建一个“beta”环境并将其与您的 AWS 开发配置文件关联。IDE 将创建您的项目结构,并准备好配置文件供您使用。您现在可以从 CloudFormation 资源管理器中选择您的“beta”环境,以确保所有部署都使用正确的设置。
图 1:使用环境配置初始化 CloudFormation 项目
从智能编写开始
创建一个新的 CloudFormation 模板并开始输入 AWS::EC2::VPC。IDE 会在您键入时提供智能补全。
图 2.0:具有 CloudFormation 感知智能感知功能的资源类型自动补全
当您添加 Properties 部分时,请注意一些有趣的事情:没有任何内容自动出现。这是因为 Amazon Elastic Compute Cloud (Amazon EC2) VPC 没有必需的属性。
图 2.1:VPC 属性没有自动建议,因为没有必需的属性
将鼠标悬停在 Properties 上,可以看到所有可用选项及其类型和文档链接。
图 2.2:悬停信息显示可选属性及其文档
添加一个 CIDR 块,然后创建一个子网。这次,当您键入 Properties 时,VpcId 会立即出现,因为它是必需的。
图 2.3:为 EC2 子网自动建议必需的属性 VpcID
IDE 会提供模板中的资源名称,当您使用 !GetAtt 或 !Ref 时,它知道每种资源类型有哪些可用属性。
图 2.4:针对 !GetAtt 和 !Ref 等内部函数的类型感知补全
实时验证实战
继续构建时,添加 MapPublicIpOnLaunch: true 以创建一个公共子网。立刻,一条蓝色的波浪线出现。
图 3:实时高亮的 CloudFormation Guard 警告
悬停会显示一条来自 AWS 安全支柱规则的 CloudFormation Guard 警告:出于安全合规考虑,不推荐此配置。
图 3.1:带有详细解释的安全合规警告
通过复制第一个子网来创建第二个子网,但现在出现了红色的波浪线。CFN Lint 已经检测到您的两个子网之间存在重叠的 CIDR 块——这是一个会在部署期间导致失败的问题。您可以使用提供的上下文信息立即修复它。
图 3.2:CFN Lint 检测重叠 CIDR 块的错误,提供详细的错误信息帮助您快速解决问题
导入现有资源
现在您需要一个 S3 存储桶。不必从头编写,只需打开左侧的资源浏览器面板。利用 CCAPI 集成,您可以查看所有现有的 AWS 资源。选择一个 S3 存储桶,然后单击“导入资源状态”。IDE 会拉取完整的资源配置,其中所有属性均已设置好。您现在可以对此资源进行迭代,而无需记住或查找所有配置细节。
图 4:从实时 AWS 资源自动导入的资源配置
开发者体验优势
CloudFormation IDE 体验在生产力与质量方面带来了可观的改进: 生产力提升:
- 减少上下文切换:将整个工作流程保持在一个地方。
- 加快迭代周期:在几秒钟内捕获并修复问题,而不是几分钟或几小时。
- 左移验证:在部署前而非部署后识别问题。
- 智能辅助:减少查阅文档的时间,增加构建的时间。
质量改进:
- 主动错误预防:多层验证能及早发现问题。
- 默认安全:来自 CloudFormation Guard 的内置合规性检查。
- 最佳实践强制执行:与 AWS 建议保持一致的自动化指导。
- 部署信心:预部署验证减少了回滚场景。
以前需要数小时故障排除和多次部署尝试的工作,现在变成了一个有信心的 30 分钟开发周期。
“我肯定会使用这些功能;它们有助于减少反馈循环,并加快 IaC 模板的开发速度。” – AWS Community Builder
须知事项
平台支持 CloudFormation IDE 体验可用于:
- Visual Studio Code:完整功能支持。
- Kiro:完整功能支持。
- Cursor:完整功能支持。
- JetBrains IDE:在整个 IntelliJ 系列中实现完全集成(快速跟进)。
- 操作系统:macOS(ARM)、Linux(x64)和 Windows。
结论
CloudFormation IDE 体验消除了割裂您工作流的上下文切换。在一个环境中完成编写、验证和部署。过去需要数小时迭代的工作,现在只需几分钟。
准备好开始了吗?从 AWS Toolkit for VS Code 安装 CloudFormation 扩展,亲身体验不同。有关详细设置说明和功能文档,请参阅 CloudFormation IDE 体验指南。
关于作者:
Damola Oluyemo Damola Oluyemo 是 Amazon Web Services 专注于企业客户的解决方案架构师。他帮助客户设计云解决方案,同时探索基础设施即代码和生成式 AI 在软件开发中的潜力。
Jehu Gray Jehu Gray 是 Amazon Web Services 的原型架构师,他帮助客户设计符合其需求的解决方案。他喜欢探索使用 IaC 可以实现什么。
标签: AWS CloudFormation, 开发者工具