Terraform 入門:AWS CDK 和 AWS CloudFormation 專家指南 - AWS 方案指引

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

Terraform 入門:AWS CDK 和 AWS CloudFormation 專家指南

Steven Guggenheimer,Amazon Web Services (AWS)

2024 年 3 月 (文件歷史記錄)

如果您只佈建雲端資源的經驗位於 領域,則除了 AWS Cloud Development Kit (AWS CDK)和 之外 AWS,使用基礎設施即程式碼 (IaC) 工具的經驗可能有限AWS CloudFormation。事實上,類似的工具,例如 Hashicorp Terraform,對您來說可能完全不熟悉。不過,您越深入雲端之旅,就越容易遇到 Terraform。這將取決於您的優勢,以便熟悉其核心概念。

雖然 Terraform、 AWS CDK和 CloudFormation 達成類似的目標並共享許多核心概念,但有一些差異。如果您是第一次接近 Terraform,您可能尚未準備好處理這些差異。畢竟, AWS CDK 和 CloudFormation 堆疊都是以 為基礎 AWS 帳戶,因此,它們與他們維護的大部分資源有直接關係。Terraform 並非以任何單一雲端提供者的環境為基礎。這賦予它支援各種不同供應商的靈活性,但必須維護來自遠端位置的資源。

本指南有助於解密 Terraform 背後的核心概念,以協助您處理任何 IaC 挑戰。它著重於 Terraform 如何使用提供者、模組和狀態檔案等概念來佈建資源。它也會將 Terraform 概念與 AWS CDK 和 CloudFormation 執行類似操作的方式進行比較。

注意

使用程式設計編碼語言, AWS CDK 協助開發人員部署 CloudFormation 堆疊。執行 之後cdk synth,您的程式碼會轉換為 CloudFormation 範本。從那時開始, AWS CDK 和 CloudFormation 之間的程序完全相同。為了簡潔起見,本指南通常參考 CloudFormation 術語中的 AWS IaC 程序,但比較與 相同 AWS CDK。

CloudFormation 和 Terraform 術語

比較 Terraform 與 AWS CDK 和 CloudFormation 時,由於用於描述它們的術語不一致,因此協調 IaC 核心概念可能很困難。以下是這些術語以及本指南將如何參考它們:

  • 堆疊堆疊是部署到 CI/CD 管道的 IaC,可作為單一單位追蹤雖然此術語在 CloudFormation 中很常見,但 Terraform 實際上不會使用此術語。Terraform 堆疊是已部署的根模組及其所有子模組。不過,為了避免混淆術語模組,本指南使用術語堆疊來描述這兩個工具的單一部署。

  • 狀態 - 狀態是 IaC 部署堆疊內所有目前追蹤的資源及其目前組態了解 Terraform 狀態和後端節所述,Terraform 使用的術語狀態超過 CloudFormation。這是因為維護狀態在 Terraform 中更可見,但追蹤和更新狀態對 CloudFormation 同樣重要。

  • IaC 檔案 – IaC 檔案是包含基礎設施作為程式碼 (IaC) 語言的單一檔案CloudFormation 將單一 CloudFormation 檔案稱為範本。不過,Terraform 中的範本範本檔案完全不同。相當於 Terraform 中的 CloudFormation 範本稱為組態檔案。為了將本指南中的混淆降至最低, 術語檔案IaC 檔案用於參考 CloudFormation 範本和 Terraform 組態檔案。

下表比較用於 CloudFormation 和 Terraform 的術語。此資料表的目的是顯示相似性。這些不是one-to-one比較。CloudFormation 和 Terraform 之間的每個概念至少略有不同。本指南相關章節將詳細說明概念。

CloudFormation 術語 Terraform 詞彙 本指南的章節
CDK 介面 (例如 IBucket) 資料來源 了解地形資料來源
變更集 計畫 了解地形模塊
條件函數 條件式運算式 了解 Terraform 函數、表達式和中繼引數
DependsOn 屬性 depends_on 中繼引數 了解 Terraform 函數、表達式和中繼引數
內建函數 函數 了解 Terraform 函數、表達式和中繼引數
模組 模組 了解地形模塊
輸出 輸出值 了解 Terraform 變數、本機值和輸出
Parameters Variables 了解 Terraform 變數、本機值和輸出
登錄檔 供應商 了解地形提供者
範本 組態檔案 全部