AWS CloudFormation 語言伺服器 - AWS CloudFormation

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

AWS CloudFormation 語言伺服器

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

IDEs與 AWS CloudFormation 語言伺服器整合

AWS 透過 AWS Toolkit 為下列 IDEs 提供off-the-shelf整合: CloudFormation

下列 IDEs也支援 CloudFormation 語言伺服器:

CloudFormation Language Server 遵循語言伺服器通訊協定 (LSP),因此其他整合是可設定的。如需將語言伺服器與其他編輯器整合的說明,請參閱 安裝指南

開始使用

先決條件

在開始之前,請確認:

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

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

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

步驟 1:安裝或升級 AWS Toolkit

從 IDE 的延伸模組或外掛程式管理員安裝或更新至最新版本的 AWS Toolkit,然後重新啟動 IDE。

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

步驟 2:存取 AWS Toolkit 中的 CloudFormation

安裝 AWS Toolkit 之後,請在 IDE 中開啟 CloudFormation 面板。在 VS 程式碼中,從活動列開啟 AWS Toolkit 面板,然後選擇 CLOUDFORMATION。在 JetBrains IDEs中,從側邊列開啟 AWS Toolkit 工具視窗,然後選取 CloudFormation 標籤。

CloudFormation 面板包含下列區段:

  • 區域:顯示目前的 AWS 區域。在 VS 程式碼中,您可以透過選取區域名稱或使用 AWS CloudFormation:從命令面板選取區域命令來變更它。在 JetBrains IDEs中,區域是透過 AWS Toolkit 連線設定來設定。

  • 堆疊:顯示您帳戶中 CloudFormation 堆疊的分頁清單。展開堆疊以檢視其變更集節點,其中列出與該堆疊相關聯的變更集。使用檢視堆疊詳細資訊動作來開啟堆疊詳細資訊檢視,其中會顯示堆疊概觀、事件、輸出和資源。

  • 資源:新增資源類型之後,面板會在您的帳戶中顯示該類型的 AWS 資源。您可以檢視、重新整理、複製或匯入範本。

在 JetBrains IDEs 中,樹狀目錄上方的工具列可讓您快速存取常見動作,包括驗證和部署重新執行驗證和部署新增資源類型重新整理。動作也可以透過在樹狀節點上按一下滑鼠右鍵的內容功能表來使用。

步驟 3:驗證、測試和精簡您的範本

當您撰寫 CloudFormation 範本時,IDE 會提供智慧型撰寫協助,協助您更快速地建立準確且合規的基礎設施。CloudFormation 語言伺服器會在背景執行,並提供下列撰寫功能:

  • 程式碼完成:根據 CloudFormation 結構描述建議資源類型、參數和屬性。

  • 新增現有 AWS 資源:可讓您將現有資源從 匯入 AWS 帳戶 範本。IDE 使用 AWS 雲端控制 API (CCAPI) 擷取資源的即時組態和屬性,協助您複製或重複使用範本中的現有基礎設施。

  • 擷取至 參數:當您的游標位於範本中的常值 (例如,類似 的字串t2.micro) 上時,IDE 會提供重構動作,將值擷取至 Parameters區段,並將常值取代!Ref為新參數的 。如果相同的常值出現在多個位置,您可以選擇一次擷取所有出現的項目。

將資源新增至範本

  • 新增資源類型:在 AWS 工具組 CloudFormation 面板的資源下,新增要瀏覽的資源類型。在 VS 程式碼中,按一下新增 + 圖示,或使用命令調色盤中的AWS CloudFormation:新增資源類型命令。在 JetBrains 中,按一下工具列中的新增資源類型按鈕,或以滑鼠右鍵按一下資源節點。

  • 搜尋資源類型:在搜尋對話方塊中,輸入您要新增 AWS 的資源類型。範例:

    • AWS::S3::Bucket

    • AWS::Lambda::Function

  • 瀏覽資源:在資源區段下,會顯示您帳戶中偵測到 AWS 的資源分頁清單。如果您有許多資源,則只會顯示第一頁。使用導覽控制項來瀏覽其他頁面,並檢視所有可用的資源。

  • 選擇您要包含在範本中的資源。

  • 視您的目標而定,您可以透過兩種方式將資源插入範本:

    • 複製現有資源:使用現有 AWS 資源的即時組態和屬性,在範本中建立新的資源。

    • 匯入現有資源:使用即時狀態將實際資源新增至您的範本,藉此將實際資源插入您的堆疊。

提示

  • 您可以隨時重新整理資源區段,以檢視帳戶或區域中可用資源的最新清單。

  • 如果您要匯入資源,請勿新增已屬於相同帳戶中現有 CloudFormation 堆疊的資源。

  • 若要確認資源是否已由 CloudFormation 管理,請使用資源旁邊的資訊動作。在 VS 程式碼中,按一下 i 圖示。在 JetBrains IDEs中,在資源上按一下滑鼠右鍵,然後選擇取得堆疊管理資訊

在 VS 程式碼中,您可以使用命令 AWS CloudFormation:依類型新增相關資源,將相關資源新增至選取的資源。從範本中已定義的資源類型中選取資源類型後,IDE 會顯示通常與該類型相關聯或相依的資源清單。例如,如果您選取 AWS::EC2::Instance,IDE 可能會建議新增相關資源,例如 AWS::EC2::SecurityGroupAWS::EC2::Subnet。此功能可協助您快速建置連線的基礎設施元件,而無需手動搜尋相容的資源類型。JetBrains IDEs 目前不支援此功能。

靜態驗證

CloudFormation Language Server 提供內建的靜態驗證,採用 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 規則,著重於資源安全和組態衛生的基礎最佳實務。若要進一步了解,請參閱 防護規則登錄檔。

  • 新增規則套件:若要新增或修改規則集,請開啟 IDE 設定並導覽至 Guard 組態區段,以選取或上傳其他 Guard 規則套件。

秘訣:了解診斷指標

  • 藍色指標:最佳實務提示或最佳化建議。

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

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

步驟 4:導覽範本

IDE 提供 CloudFormation 範本的結構化階層檢視,組織成 ParametersOutputsResources和 等區段Mappings,顯示每個資源類型和邏輯 ID。這可讓您輕鬆地快速尋找和導覽至大型範本中的特定資源或參數。在 VS 程式碼中, Explorer 邊欄中的大綱面板會顯示此結構。在 JetBrains IDEs中,開啟結構工具視窗以檢視目前開啟檔案的範本結構。

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

步驟 5:驗證和部署

當您準備好部署 CloudFormation 範本時,請使用驗證和部署功能來建立變更集。IDE 會驗證您的範本,如果找不到封鎖錯誤,則會繼續建立偏離感知的變更集。IDE 接著會顯示差異檢視,讓您可以在執行變更集之前檢閱所有提議的變更。

在 VS 程式碼中,開啟命令面板並執行 AWS CloudFormation:驗證和部署。命令調色盤會逐步引導您選取範本、堆疊名稱、參數、功能和其他部署選項。在 JetBrains IDEs中,使用驗證和部署工具列按鈕,在編輯器中的範本檔案上按一下滑鼠右鍵,或在樹狀目錄中的堆疊上按一下滑鼠右鍵。JetBrains 會顯示精靈對話方塊,您可以在其中設定所有部署選項,包括範本選擇、堆疊名稱、參數、功能、標籤和進階選項。

驗證的運作方式

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

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

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

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

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

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

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

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

檢視堆疊事件

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

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

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

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

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

您也可以從此面板檢視堆疊的資源輸出堆疊事件檢視可協助您追蹤部署進度、識別潛在問題,並確認堆疊何時成功完成。

在 IDE 中初始化 CloudFormation 專案 (僅限 VS 程式碼)

在 IDE 中初始化 CloudFormation 專案可協助您設定具有正確資料夾、環境組態和 AWS 憑證的結構化工作區,以便您可以可靠地驗證和部署範本。您可以直接從 IDE 初始化新的 CloudFormation 專案,以建立此建議設定。此功能目前僅適用於 VS 程式碼,JetBrains IDEs 不支援此功能。

若要初始化 CloudFormation 專案:

  • 開啟命令調色盤

    • 從 VS 程式碼中,開啟命令調色盤 (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。