View a markdown version of this page

CloudFormation 語言伺服器 - AWS CloudFormation

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

CloudFormation 語言伺服器

AWS CloudFormation 語言伺服器可協助您在編輯器中撰寫 CloudFormation 範本。當您輸入 時,它會建議資源類型和屬性、顯示文件、尋找錯誤、讓您跳到定義,以及提供某些問題的修正。它使用語言伺服器通訊協定 (LSP),可讓伺服器使用不同的編輯器。針對這些本機撰寫功能啟動和使用語言伺服器不需要 AWS 帳戶 或 AWS 登入資料。

Toolkit AWS 整合也會針對呼叫 AWS 服務的線上工作流程使用語言伺服器。這些工作流程可以瀏覽資源和堆疊。他們也可以執行服務端範本驗證、部署範本、顯示變更集差異,以及監控堆疊事件。這些線上工作流程是唯一需要作用中 AWS 帳戶 且有效 AWS 登入資料的功能。

與 CloudFormation 語言伺服器整合的 IDEs

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

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

針對 Visual Studio Code 和 JetBrains IDEs,安裝 AWS Toolkit。工具組包含並啟動語言伺服器,因此您不需要單獨下載伺服器。

對於支援 LSP 的另一個編輯器,請從 GitHub 的最新版本下載您電腦的檔案,解壓縮檔案,並設定您的編輯器執行下列命令:

node /path/to/install-location/cfn-lsp-server-standalone.js --stdio

如需不同編輯器支援的 Node.js 版本、可用下載、檔案驗證和設定範例,請參閱獨立安裝指南。

開始使用

下列步驟說明如何透過 AWS Toolkit for Visual Studio Code 和 JetBrains IDEs 使用語言伺服器。對於另一個編輯器,請遵循獨立安裝指南中的設定範例。

先決條件

在開始之前,請確認:

  • 您在 macOS、 Windows或 上使用支援的 IDELinux。

  • 針對 Visual Studio Code 或 JetBrains IDE,請安裝或更新 AWS Toolkit。

  • 對於另一個編輯器,請安裝支援的 Node.js 版本,並下載您電腦的語言伺服器檔案。獨立安裝指南會列出支援的版本和檔案。

您不需要 AWS 帳戶 或 AWS 登入資料來啟動語言伺服器,或使用其本機撰寫和範本檢查功能。只有當您使用瀏覽資源或堆疊的線上工作流程、呼叫 CloudFormation 服務或部署範本時,才在 Toolkit 中設定有效的 AWS 登入資料。

步驟 1:安裝或升級 AWS Toolkit

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

安裝後, AWS Toolkit 會自動啟用 CloudFormation IDE 支援。當您第一次使用 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 範本時,CloudFormation 語言伺服器會在背景執行,並提供本機撰寫協助,無需 AWS 登入資料:

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

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

Toolkit 也提供線上工作流程,可讓您將現有 AWS 資源新增至範本。此工作流程需要有效的 AWS 登入資料,並使用 AWS 雲端控制 API (CCAPI) 擷取資源的即時組態和屬性,協助您複製或重複使用範本中的現有基礎設施。

將資源新增至範本

  • 新增資源類型:在 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::SecurityGroup或 AWS::EC2::Subnet。選取一或多個相關資源類型,然後選擇是否要建立新的資源定義或匯入現有的資源。JetBrains IDEs 目前不支援此功能。

靜態驗證

CloudFormation Language Server 提供由 CloudFormation Linter和 提供支援的內建靜態驗證CloudFormation Guard。這些檢查會在本機幕後執行,不需要 AWS 登入資料。它們可協助您在部署之前識別語法錯誤、合規差距和最佳實務問題。

靜態驗證概觀

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

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

步驟 5:驗證和部署

驗證和部署是呼叫 CloudFormation 服務的線上工作流程,需要有效的 AWS 登入資料。當您準備好部署範本時,請使用此功能來建立變更集。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_PROGRESS、 UPDATE_COMPLETE或 ROLLBACK_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 執行驗證、預覽部署或切換環境。

開放原始碼

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

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

需要幫助?

試用 CloudFormation 社群 AWS re:Post。