AWS CloudFormation 语言服务器
AWS CloudFormation 语言服务器提供了加速撰写基础设施即代码(IaC)和安全、自信地部署 AWS 资源的功能。它遵循语言服务器协议
IDE 与 AWS CloudFormation 语言服务器集成
AWS 工具包扩展集成了 CloudFormation 语言服务器,以增强撰写体验。基于 VS Code 的 IDE 目前支持这一集成,包括:
开始使用
先决条件
在您开始之前,请确保:
-
您正在支持的操作系统(macOS、Windows 或 Linux)上使用基于 VS Code 的 IDE。
-
您已为自己的 IDE 安装或升级到最新版本的 AWS 工具包
。
AWS CloudFormation 语言服务器中的某些功能需要有效的 AWS 账户和已配置的凭证。您必须使用有效的凭证通过 AWS 工具包登录您的 AWS 账户。
第 1 步:安装或升级 AWS 工具包
-
打开 IDE 的扩展或插件管理器。
-
搜索 AWS 工具包。
-
为您的 IDE 安装或更新至 3.85.0 版或更高版本的 AWS 工具包。
-
安装完毕后重启 IDE。
注意:安装后,AWS 工具包会自动启用 CloudFormation IDE 支持。首次安装或升级带有 AWS CloudFormation 语言服务器扩展的 AWS 工具包时,系统会提示您授予 AWS 收集匿名使用数据的权限。这些数据有助于 AWS 改进 CloudFormation 语言服务器并增强撰写体验。不会收集任何敏感信息,AWS 也不会记录或存储模板内容、资源配置或任何可识别身份的客户数据。您可以随时从 IDE 设置中更改遥测首选项。所收集的使用数据仅涵盖功能交互和性能指标。这些见解有助于 AWS 识别并确定需要改进方面优先顺序,例如加快验证速度、增强自动补全功能以及改进错误诊断机制。
第 2 步:在 AWS 工具包面板中访问 CloudFormation
在 IDE 中,从活动栏中打开 AWS 工具包面板。在 AWS 工具包下,选择 CLOUDFORMATION。
面板部分:
-
区域:显示当前 AWS 区域。您可以通过选择区域名称或使用命令面板中的 AWS CloudFormation: Select Region 命令来更改它。
-
环境:表示您在 CFN init(例如,开发、测试或生产)期间选择的环境。此值只有在完成环境选择步骤后才会显示。
-
堆栈:显示您的账户中 CloudFormation 堆栈的分页列表。
-
单击“刷新”图标以更新堆栈列表。
-
使用 + 图标以将新模板部署为堆栈。
-
每个堆栈条目包括:
-
概述:显示堆栈摘要和状态
-
堆栈 ID
-
描述 –
-
创建时间和更新时间
-
状态和状态原因
-
事件、输出和资源
-
-
更改集
-
-
资源:选择资源类型后,面板将显示您账户中该类型的 AWS 资源。您可以查看、刷新、复制或将它们导入到您的模板中。
第 3 步:验证、测试和优化您的模板
在您编写 CloudFormation 模板时,IDE 会提供智能的撰写辅助功能,以帮助您更快速地创建准确且符合规范的基础设施。CloudFormation 语言服务器在后台运行,并提供以下撰写功能:
-
代码完成:根据 CloudFormation 架构来建议资源类型、参数和属性。
-
添加现有的 AWS 资源:允许您将现有资源从您的 AWS 账户导入您的模板。IDE 使用 AWS 云端控制 API(CCAPI)检索资源的实时配置和属性,从而帮助您克隆或重复使用模板中的现有基础设施。
要向模板添加资源
-
展开 CloudFormation 资源面板:在 AWS 工具包侧面板中,展开 CloudFormation,然后在资源下单击添加 + 图标。
-
搜索资源类型:要查找特定的 AWS 资源类型,请在搜索栏中键入要添加的特定 AWS 资源类型。示例:
-
AWS::S3::Bucket -
AWS::Lambda::Function
您可以使用命令面板中的 AWS CloudFormation:添加资源类型选择资源类型。
-
-
向模板添加资源:在资源面板下,将显示您的账户中检测到的 AWS 资源的分页列表。如果您拥有大量资源,则只会显示首页。使用面板底部的导航控件来浏览其他页面并查看所有可用资源。
-
选择要包含在您的模板中的资源。
-
您可以通过两种方式将资源插入到您的模板中,具体方式取决于您的目标:
-
克隆现有资源:使用现有 AWS 资源的实时配置和属性在模板中创建新资源。
-
导入现有资源:通过将资源的实时状态添加到模板中,将其插入到您的堆栈中。
-
提示
-
您可以随时刷新资源面板,以查看您的账户或区域中可用的最新资源列表。
-
如果您正在导入资源,请不要在同一个账户中添加属于现有 CloudFormation 堆栈的已存在资源。
-
要确认资源是否已由 CloudFormation 管理,请单击资源名称旁边的 i(信息)图标。
-
或者,您可以使用命令 AWS CloudFormation:获取堆栈管理信息来检查资源是否属于堆栈。
添加相关资源
您可以使用命令 AWS CloudFormation:按类型添加相关资源将相关资源添加到所选资源。一旦您从模板中已定义的资源类型中选择了一个资源类型,IDE 就会显示与该类型通常相关联或依赖于该类型的资源列表。例如,如果您选择 AWS::EC2::Instance,IDE 可能会建议添加相关资源,例如 AWS::EC2::SecurityGroup 或 AWS::EC2::Subnet。此功能可帮助您快速构建相互连接的基础设施组件,而无需手动搜索兼容的资源类型。
静态验证
CloudFormation IDE 提供了由 AWS CloudFormation Linter(cfn-lint)
静态验证概述
您将在 IDE 中看到两种类型的实时静态验证:
-
CloudFormation Linter(
cfn-lint):根据 CloudFormation 资源规范和架构规则验证您的模板。 -
Guard(
cfn-guard):根据合规性规则和组织策略包验证您的模板。
CloudFormation Linter(cfn-lint)
CloudFormation Linter 已集成到 IDE 中,以在您键入时自动检查模板的语法和结构。
-
架构验证:检测语法和架构错误,以确保您的模板符合 CloudFormation 资源架构。
-
错误突出显示:在出现问题时,会显示红色或黄色的波浪线,这些波浪线代表部署拦截器或警告信息。
-
将鼠标悬停在帮助上:将鼠标悬停在错误上方时,IDE 会显示与该问题相关的诊断消息。如果有快速修复方案可用,它也会在悬浮面板中提供。
Guard 集成
Guard 会根据定义合规性和安全策略的规则集来验证您的模板。IDE 通过 CloudFormation 语言服务器实时运行 Guard 验证,以在您撰写模板时为您提供即时反馈。
-
默认规则包:IDE 包含了一套预先注册好的 Guard 规则,这些规则侧重于资源安全和配置维护方面的基本最佳实践。要了解更多信息,请链接到 guard 规则注册表
。 -
添加规则包:要添加或修改规则集,请打开“设置”、Guard,然后选择或上传其他 Guard 规则包。
提示:了解波浪线指示
-
蓝色波浪线:最佳实践提示或优化建议。
-
黄色波浪线:关于非拦截问题的警告(例如,缺少标签或参数)。
-
红色波浪线:部署拦截器,例如无效的属性名称、缺少必填字段或架构不匹配。
第 4 步:浏览模板
当您在资源管理器中单击模板文件时,大纲面板会自动显示您的 CloudFormation 模板的结构化分层视图。它会将模板组织成 Parameters、Resources、Outputs 和 Mappings 之类的部分,并显示每种资源类型和逻辑 ID。这使得在大型模板中能够轻松快速地定位并导航到特定的资源或参数。
您可以将转到定义用于 GetAtt 和 Ref 之类的内置函数,从而使您可以直接跳转到模板中引用的资源或参数。这可以帮助您跟踪依赖项、了解资源关系并更高效地进行编辑。
第 5 步:验证和部署
当您准备好部署 CloudFormation 模板时,请打开命令面板并运行 AWS CloudFormation:验证并部署。该命令会验证您的模板,如果未发现任何拦截错误,则会进入部署阶段。在确认之前,IDE 会显示偏差感知更改集摘要和差异视图,以便您可以查看所有建议的更改。
验证的工作原理
IDE 会在部署前自动执行验证检查,并根据常见的故障原因对模板进行验证,包括:
-
无效的属性语法或架构不匹配:这些问题通常在编写过程中被
cfn-lint检测出来,但如果用户在未解决这些问题的情况下就进行部署,那么在创建或更新堆栈时,CloudFormation 的部署时验证也会显示出同样的错误。 -
资源名称与您账户中的现有资源冲突。
-
特定于服务的约束,例如 S3 存储桶名称冲突或缺少加密。
如果验证检测到错误,IDE 会使用红色或黄色波浪线直接在模板中突出显示问题,并在 PROBLEMS 面板中列出错误。每个问题都包括导致故障的特定属性或资源,并附上相应的解决建议。如果没有阻止错误,则可以继续进入部署阶段。
如果发现警告(非阻止问题),会出现一个对话框,让您可以选择继续进行部署操作,或者取消操作并进行修正。
IDE 将打开一个偏差感知更改集,其中显示当前模板与已部署堆栈配置之间的任何差异。这使您能够在执行之前查看、确认或取消更改集。
注意:偏差感知更改集能够增强 CloudFormation 的部署流程,使您能够安全地处理堆栈的偏差问题。当您的资源的实际状态与 CloudFormation 模板中所定义的内容不一致时,就会出现堆栈偏差,这种情况通常因通过 AWS 管理控制台、CLI 或 SDK 进行的手动更改导致。CloudFormation 偏差感知更改集将处理后的堆栈配置与实时资源状态进行比较,IDE 会显示这些差异,这样您就可以在部署之前使资源恢复合规性。
查看堆栈事件
部署开始后,您可以导航到面板中的 CloudFormation 选项卡以实时监控进度。在堆栈事件下,您将看到部署期间执行的操作列表。每个事件都包含详细信息,例如:
-
时间戳:事件发生的时间
-
资源:正在创建、更新或删除的特定 AWS 资源
-
状态:操作的当前状态(例如
CREATE_IN_PROGRESS、UPDATE_COMPLETE或ROLLBACK_IN_PROGRESS) -
原因:其他背景信息或错误消息(如果适用)
您也可以通过此面板查看堆栈的资源和输出。如果您要在AWS 管理控制台中打开堆栈,请使用堆栈名称旁边的外部链接图标。堆栈事件视图有助于您跟踪部署进度、识别潜在问题,并确认您的堆栈是否已成功完成部署。
在 IDE 中初始化 CloudFormation 项目
在 IDE 中初始化 CloudFormation 项目可以帮助您使用正确的文件夹、环境配置和 AWS 凭证设置结构化工作区,以便您可以可靠地验证和部署模板。您可以直接从 IDE 来初始化一个新的 CloudFormation 项目,从而创建此建议设置。
要初始化 CloudFormation 项目,请执行以下操作:
-
打开命令面板
-
从 IDE 中,打开命令面板(macOS 上的
Ctrl+Shift+P或Cmd+Shift+P)。 -
选择 AWS CloudFormation:CFN Init:初始化项目。
-
-
选择项目目录
-
默认情况下,IDE 将使用您当前的工作目录。
-
您可以将此路径更改为您希望存储 CloudFormation 模板所在的任何文件夹。
-
-
选择您的 AWS 凭证配置文件
-
系统将提示您选择 AWS 凭证配置文件。所选配置文件将用于环境检测、验证和部署。
-
-
设置环境
-
系统将提示您创建或选择环境。
-
环境定义了您的模板将在何处以及以何种方式进行部署或验证(例如,开发环境、测试环境或生产环境)。您可以使用 AWS CloudFormation:CFN Init:添加环境来选择或更改您的环境。
-
您可以使用 AWS CloudFormation:CFN Init:移除环境来移除您选择的环境。
-
-
(可选)导入参数文件
-
如果您已经有现有的参数文件,那么该 IDE 会在初始化时允许您导入这些文件。
-
IDE 会自动检测兼容的文件,并将它们链接到您的项目中,以便在模板验证和部署过程中使用。
-
-
命名并最终确定项目
-
提供项目名称,例如 beta-environment,然后完成设置。
-
IDE 将为您创建初始项目结构和配置文件。
-
您可以直接从 IDE 中进行验证、预览部署操作,或者在不同环境中进行切换。
开源
AWS CloudFormation 语言服务器根据 Apache-2.0 许可开源,让客户能够全面了解模板诊断、模式验证以及静态分析是如何进行的。对于在采用工具之前需要来源级可见性的客户来说,这减少了安全性和合规性方面的摩擦。
该代码库已在 GitHub 上公开发布:https://github.com/aws-cloudformation/cloudformation-languageserver/
需要帮助?
在 AWS re:Post 上试用 CloudFormation 社区