AWS CloudFormation 語言伺服器 - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS CloudFormation 語言伺服器

AWS CloudFormation 語言伺服器提供加速編寫infrastructure-as-code (IaC) 以及安全且自信地部署 AWS 資源的功能。它遵循語言伺服器通訊協定 (LSP) 來提供有關暫留、自動完成、透過靜態驗證診斷的文件,請前往定義和程式碼動作。除了這些傳統語言伺服器功能之外,伺服器還會新增線上功能,透過 CloudFormation 探索和部署 AWS 資源。這包括使用變更集驗證和部署範本的能力;檢視堆疊差異、事件、資源和輸出;依類型列出堆疊和瀏覽資源;以及將即時資源狀態直接插入 CloudFormation 範本。開發人員工具和整合開發環境 (IDE) 可以利用語言伺服器功能來增強 CloudFormation 上 IaC 開發人員的體驗。

與語言伺服器整合的 AWS CloudFormation IDEs

AWS Toolkit 擴充功能整合 CloudFormation 語言伺服器,以增強撰寫體驗。VS 程式碼型 IDEs 目前支援此整合,包括:

開始使用

先決條件

在開始之前,請確認:

  • 您在支援的作業系統 (macOS、 Windows或 ) 上使用 VS 程式碼型 IDELinux。

  • 您已為 IDE 安裝或升級至最新版本的 AWS Toolkit

AWS CloudFormation 語言伺服器中的某些功能需要作用中 AWS 帳戶 和設定的登入資料。您必須使用有效的登入資料, AWS 帳戶 透過 AWS Toolkit 登入您的 。

步驟 1:安裝或升級 AWS Toolkit

  • 開啟 IDE 的延伸模組或外掛程式管理員。

  • 搜尋 AWS Toolkit。

  • 安裝或更新至適用於 IDE 的 AWS Toolkit 3.85.0 版或更新版本。

  • 安裝後重新啟動 IDE。

注意:安裝後, AWS Toolkit 會自動啟用 CloudFormation IDE 支援。當您第一次使用語言伺服器延伸安裝或升級 AWS Toolkit AWS CloudFormation 時,系統會提示您授予 AWS 收集匿名使用資料的許可。此資料有助於 AWS 改善 CloudFormation 語言伺服器,並增強撰寫體驗。不會收集任何敏感資訊, AWS 也不會記錄或存放範本內容、資源組態或任何可識別身分的客戶資料。您可以隨時從 IDE 設定變更遙測偏好設定。所收集的用量資料僅著重於特徵互動和效能指標。這些洞見有助於 AWS 識別和排定改善的優先順序,例如更快的驗證、增強的自動完成和更好的錯誤診斷。

步驟 2:在 AWS Toolkit 面板中存取 CloudFormation

在 IDE 中,從活動列開啟 AWS Toolkit 面板。在 AWS 工具組下,選擇 CLOUDFORMATION

面板區段:

  • 區域:顯示目前的 AWS 區域。您可以透過選取區域名稱或使用 AWS CloudFormation:從命令調色盤選取區域命令來變更它。

  • 環境:指出您在 期間選取的環境 CFN init(例如,dev、test 或 prod)。只有在完成環境選擇步驟後,才會顯示此值。

  • 堆疊:顯示您帳戶中 CloudFormation 堆疊的分頁清單。

    • 按一下重新整理圖示以更新堆疊清單。

    • 使用 + 圖示將新範本部署為堆疊。

    • 每個堆疊項目包括:

      • 概觀:顯示堆疊摘要和狀態

      • 堆疊 ID

      • Description

      • 建立時間和更新時間

      • 狀態狀態原因

      • 事件輸出和資源

    • 變更集

  • 資源:選取資源類型之後,面板會顯示帳戶中該類型的 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::SecurityGroupAWS::EC2::Subnet。此功能可協助您快速建置連線的基礎設施元件,而無需手動搜尋相容的資源類型。

靜態驗證

CloudFormation IDE 提供內建的靜態驗證,採用 AWS CloudFormation Linter (cfn-lint) 和 技術AWS CloudFormation Guard。當您編寫範本時,這些驗證會在幕後執行,協助您在部署之前識別語法錯誤、合規差距和最佳實務問題。

靜態驗證概觀

您會在 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 規則套件。

秘訣:了解快速行指標

  • 藍色小幫手:最佳實務提示或最佳化建議。

  • 黃色小工具:非封鎖問題的警告 (例如,缺少標籤或參數)。

  • 紅色小工具:部署封鎖程式,例如無效的屬性名稱、缺少必要欄位或結構描述不相符。

步驟 4:導覽範本

當您按一下 Explorer 中的範本檔案時,大綱面板會自動顯示 CloudFormation 範本的結構化階層檢視。它會將範本組織成 ParametersOutputsResources和 等區段Mappings,並顯示每個資源類型和邏輯 ID。這可讓您輕鬆地快速尋找和導覽至大型範本中的特定資源或參數。

您可以針對 GetAtt和 等內部函數使用 Go to DefinitionRef,可讓您直接跳到範本中參考的資源或參數。這可協助您追蹤相依性、了解資源關係,並更有效率地進行編輯。

步驟 5:驗證和部署

當您準備好部署 CloudFormation 範本時,請開啟命令面板並執行 AWS CloudFormation:驗證和部署。命令會驗證您的範本,如果找不到封鎖錯誤,則會進入部署階段。在確認之前,IDE 會顯示偏離感知變更集摘要和差異檢視,以便您可以檢閱所有提議的變更。

驗證的運作方式

IDE 會在部署之前自動執行驗證檢查,並根據常見的失敗原因驗證您的範本,包括:

  • 屬性語法或結構描述不相符無效:這些問題通常在撰寫cfn-lint期間由 發現,但如果使用者繼續部署而不解決,CloudFormation 的部署時間驗證將在建立或更新堆疊之前出現相同的錯誤。

  • 資源名稱與您帳戶中的現有資源衝突。

  • 服務特定的限制條件,例如 S3 儲存貯體名稱衝突或缺少加密。

如果驗證偵測到錯誤,IDE 會使用紅色或黃色快速行反白範本中的問題,並在 PROBLEMS 面板中列出錯誤。每個問題都包含導致失敗的特定屬性或資源,以及建議的修正。如果沒有封鎖錯誤,您可以繼續部署階段。

如果發現警告 (非封鎖問題),則會出現一個對話方塊,允許您繼續部署或取消並進行更正。

IDE 會開啟偏離感知變更集,顯示目前範本與已部署堆疊組態之間的任何差異。這可讓您在執行之前檢閱、確認或取消變更集。

注意:偏離感知變更集可讓您安全地處理堆疊偏離,以增強 CloudFormation 部署程序。當資源的實際狀態與 CloudFormation 範本中定義的狀態不同時,就會發生堆疊偏離,通常是由於透過 AWS 管理主控台、CLI 或 SDK 進行的手動變更。CloudFormation 偏離感知變更集會比較處理過的堆疊組態與即時資源狀態,而 IDE 會呈現這些差異,讓您可以在部署之前將資源恢復合規。

檢視堆疊事件

部署開始時,您可以導覽至面板中的 CloudFormation 索引標籤,以即時監控進度。在堆疊事件下,您會看到部署期間執行的操作清單。每個事件都包含詳細資訊,例如:

  • 時間戳記:事件發生的時間

  • 資源:正在建立、更新或刪除的特定 AWS 資源

  • 狀態:操作的目前狀態 (例如 CREATE_IN_PROGRESSUPDATE_COMPLETEROLLBACK_IN_PROGRESS)

  • 原因:其他內容或錯誤訊息,如適用

您也可以從此面板檢視堆疊的資源輸出。如果您想要在 中開啟堆疊 AWS 管理主控台,請使用堆疊名稱旁的外部連結圖示。堆疊事件檢視可協助您追蹤部署進度、識別潛在問題,並確認堆疊何時成功完成。

在 IDE 中初始化 CloudFormation 專案

在 IDE 中初始化 CloudFormation 專案可協助您設定具有正確資料夾、環境組態和 AWS 憑證的結構化工作區,以便您可以可靠地驗證和部署範本。您可以直接從 IDE 初始化新的 CloudFormation 專案,以建立此建議設定。

若要初始化 CloudFormation 專案:

  • 開啟命令調色盤

    • 從您的 IDE 開啟命令調色盤 (Ctrl+Shift+P Cmd+Shift+P 上的 或 macOS)。

    • 選擇 AWS CloudFormation:CFN Init:初始化專案

  • 選擇專案目錄

    • 根據預設,IDE 會使用您目前的工作目錄。

    • 您可以將此路徑變更為您要存放 CloudFormation 範本的任何資料夾。

  • 選取您的 AWS 登入資料設定檔

    • 系統會提示您選擇 AWS 登入資料設定檔。選取的設定檔將用於環境偵測、驗證和部署。

  • 設定您的環境

    • 系統會提示您建立或選取環境。

    • 環境會定義部署或驗證範本的位置和方式 (例如 dev、beta 或 production)。您可以使用 AWS CloudFormation:CFN Init:新增環境來選取或變更您的環境。

    • 您可以使用 AWS CloudFormation:CFN Init: Remove Environment 來移除您選取的環境。

  • (選用) 匯入參數檔案

    • 如果您已經有現有的參數檔案,IDE 可讓您在初始化期間匯入它們。

    • IDE 會自動偵測相容的檔案,並將其連結至您的專案,以用於範本驗證和部署。

  • 命名並完成專案

    • 提供專案名稱,例如 beta-environment,並完成設定。

    • IDE 會為您建立初始專案結構和組態檔案。

您可以直接從 IDE 執行驗證、預覽部署或切換環境。

開放原始碼

AWS CloudFormation 語言伺服器是依據 Apache-2.0授權進行開放原始碼,讓客戶能夠完整了解範本診斷、結構描述驗證和靜態分析的執行方式。對於在採用工具之前需要來源層級可見性的客戶,這可以減少安全和合規摩擦。

程式碼庫可在 GitHub 上公開取得:https://https://github.com/aws-cloudformation/cloudformation-languageserver/

需要幫助?

試用 CloudFormation 社群 AWS re:Post。