開始使用地形表單:適用於 AWS CDK 和 AWS 專家的指導 CloudFormation - AWS 規定指引

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

開始使用地形表單:適用於 AWS CDK 和 AWS 專家的指導 CloudFormation

史蒂芬·古根海默, Amazon Web Services ()AWS

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

如果您在佈建雲端資源方面的經驗完全位於的範圍內 AWS,那麼您可能對AWS Cloud Development Kit (AWS CDK)AWS CloudFormation之外的基礎結構即程式碼 (IaC) 工具的經驗有限。實際上,類似的工具(例如 Hashicorp 地形)可能對您來說完全不熟悉。但是,您進入雲端旅程越深,遇到 Terraform 就越難免。熟悉其核心概念將是您的優勢。

雖然 Terraform AWS CDK, 和 CloudFormation 實現類似的目標和共享許多核心概念, 有相當多的差異. 如果您是第一次接近地形,您可能不會為這些差異做好準備。畢竟 AWS CDK , CloudFormation堆棧都基於其中 AWS 帳戶,因此以這種方式,它們與它們維護的大多數資源有直接關係。Terraform 並非以任何單一雲端供應商的環境為基礎。這使得它具有支持各種不同提供程序的靈活性,但它必須維護從遠程位置的資源。

本指南有助於揭開 Terraform 背後的核心概念,以幫助您處理任何 IaC 挑戰。它著重於 Terraform 如何使用概念(例如提供者,模塊和狀態文件)來佈建資源。它還使 Terraform 概念與如何執行類似 CloudFormation 操作進 AWS CDK 行對比。

注意

AWS CDK 可協助開發人員使用程式設計編碼語言部署 CloudFormation 堆疊。執行之後cdk synth,您的程式碼會轉換成 CloudFormation範本。從那時起,和之間的過程是相同 AWS CDK 的 CloudFormation。為了簡潔起見,本指南通常指的是 AWS IaC 過程,但比較對於. CloudFormation AWS CDK

CloudFormation 和地形術語

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

  • 堆棧 -是部署到 CI/CD 管道中並可以作為單個單元進行跟踪的 IaC。雖然這個術語在中很常見 CloudFormation,但 Terraform 並沒有真正使用這個術語。Terraform 堆棧是一個部署的根模塊,其所有子模塊。不過,為了避免與模組一詞混淆,本指南使用術語堆疊來描述兩種工具的單一部署。

  • 狀態 -狀是 IaC 部署堆棧中所有當前跟踪的資源及其當前配置。了解地形狀態和後端本節所述,地形使用術語狀超過。 CloudFormation這是因為維護狀態在 Terraform 中更加明顯,但是跟踪和更新狀態對於而言同樣重要。 CloudFormation

  • IaC 文件- IaC 文件是包含基礎設施代碼(IaC)語言的單個文件。 CloudFormation 將單一 CloudFormation 檔案稱為範本。但是,Terraform 中的和模板文件完全不同。相當於 Terraform 中的 CloudFormation 模板稱為配置文件。為了最大限度地減少本指南中的混淆,術語件或 IaC 文件用於指示 CloudFormation 模板和 Terraform 配置文件。

下表比較用於 CloudFormation 和地形的術語。此表格的目的是顯示相似之處。這些不是 one-to-one 比較。每個概念 CloudFormation 和地形之間至少略有不同。本指南的相關章節將深入解釋概念。

CloudFormation 任期 地形術語 本指南章節
CDK 介面 (例如 i Bucket) 資料來源 了解地形資料來源
變更集 計畫 了解地形模塊
條件函數 條件式運算式 了解地形函數,表達式和元參數
DependsOn 屬性 depends_on元參數 了解地形函數,表達式和元參數
內部函數 函數 了解地形函數,表達式和元參數
模組 模組 了解地形模塊
輸出 輸出值 瞭解地形變數、區域值和輸出
參數 Variables 瞭解地形變數、區域值和輸出
登錄檔 提供者 了解地形提供者
範本 組態檔案 全部