AWS 的 Infrastructure as Code ( IaC ) 工具

更新 發佈閱讀 9 分鐘

1. AWS 原生工具 (Official AWS Tools)

這些工具與 AWS 整合度最高,通常能最快支援 AWS 的新功能。

A. AWS CloudFormation (核心引擎)

  • 定位: AWS IaC 的基石,類似於組合語言。
  • 語言: JSON 或 YAML。
  • 特點:宣告式 (Declarative): 你告訴 AWS 你要什麼資源,AWS 負責建立。狀態管理: AWS 託管狀態 (State),能夠偵測設定偏移 (Drift Detection)。缺點: 語法冗長,缺乏程式邏輯(迴圈、判斷式難寫)。
  • 適用對象: 喜歡穩定、不需要頻繁變更邏輯的維運團隊。

B. AWS Cloud Development Kit (AWS CDK)

  • 定位: 開發者的首選,CloudFormation 的加速器。
  • 語言: TypeScript, Python, Java, C#, Go。
  • 特點:命令式 (Imperative): 使用通用程式語言來寫基礎設施。高抽象化: 提供 L2/L3 Constructs (模組),一行程式碼就能建立符合最佳實踐的 VPC 或 ECS Cluster。編譯: 執行時會編譯成 CloudFormation Template 再部署。
  • 適用對象: 軟體工程師、需要構建複雜架構的團隊。

C. AWS Serverless Application Model (AWS SAM)

  • 定位: 專為 Serverless 架構設計的 CloudFormation 擴充版。
  • 語言: YAML (簡化版)。
  • 特點:簡化語法: 定義 Lambda、API Gateway、DynamoDB 比標準 CloudFormation 簡單非常多。本地測試: 提供 sam local invoke 功能,可在本地 Docker 模擬 Lambda 執行環境。
  • 適用對象: 專注於 Serverless (Lambda/API Gateway) 開發的團隊。

D. AWS Copilot CLI

  • 定位: 專為「容器化應用」設計的高階 CLI 工具。
  • 特點:以應用為中心: 你不需要懂 VPC、Subnet 或 Load Balancer,只需告訴它「我要部署一個 Load Balanced Web Service」,它會自動幫你建好 ECS、Fargate 和網路環境。
  • 適用對象: 不想處理底層網路細節,只想快速部署 Docker 容器的開發者。

2. 主流第三方工具 (Third-Party / Open Source)

這些工具通常支援「多雲 (Multi-cloud)」,如果你公司同時使用 AWS、Azure 或 GCP,這些是更好的選擇。

A. Terraform (by HashiCorp)

  • 定位: 業界標準,市佔率極高的多雲 IaC 工具。
  • 語言: HCL (HashiCorp Configuration Language)。
  • 特點:多雲支援: 同一套工作流 (Workflow) 可用於 AWS, Azure, GCP, VMWare 等。狀態管理: 狀態檔 (State file) 需自行管理(通常存放在 S3 + DynamoDB Lock),這點與 CloudFormation 不同。模組化: 擁有龐大的社群 Module 資源。
  • 適用對象: 混合雲環境、DevOps 工程師、尋求業界標準技能的人。

B. Pulumi

  • 定位: Terraform 的競爭對手,但使用通用程式語言 (類似 CDK)。
  • 語言: TypeScript, Python, Go, C#。
  • 特點:真.程式碼: 結合了 CDK 的開發體驗 (使用程式語言) 與 Terraform 的多雲優勢。測試: 非常容易撰寫單元測試。
  • 適用對象: 想要多雲支援,但討厭寫 HCL 或 YAML 的開發者。

C. Serverless Framework

  • 定位: Serverless 領域的元老級工具 (比 SAM 還早)。
  • 語言: YAML (serverless.yml)。
  • 特點:跨雲 Serverless: 支援 AWS Lambda, Azure Functions, Google Cloud Functions。外掛生態: 擁有極其豐富的 Plugin 生態系,可擴充各種功能。
  • 適用對象: 需要跨雲 Serverless 部署,或依賴特定 Plugin 的團隊。

3. 設定管理工具 (Configuration Management)

雖然這些主要用於管理 OS 內部的軟體設定,但也常被歸類在廣義 IaC 中,或與上述工具搭配使用。

  • Ansible / Chef / Puppet:主要用於 EC2 啟動後的軟體安裝與組態設定(例如:安裝 Apache, 修改 config 檔)。區別: Terraform/CloudFormation 負責「生出 EC2」,Ansible 負責「設定 EC2 裡面的軟體」。

綜合比較與選擇建議

raw-image

簡單結論:

  • 如果您是 DevOps 工程師 且公司可能用多雲:選 Terraform。
  • 如果您是 軟體開發者 且全押 (All-in) AWS:選 AWS CDK。
  • 如果您只寫 Lambda/Serverless:選 AWS SAM。

補充資訊

AWS Application Composer

AWS Serverless Application Model (AWS SAM)不是競爭對手,而是相輔相成的關係。

用最簡單的比喻來說:

  • AWS SAM 就像是 HTML 語法(底層的語言規則)。
  • AWS Application Composer 就像是 Dreamweaver 或 Wix(用來幫你寫 HTML 的視覺化編輯器)。

以下是詳細的差異與關係解析:

1. 本質上的差異

raw-image

2. 它們如何「合作」? (工作流程)

在實際開發中,你通常會同時使用這兩者:

  1. 設計階段 (使用 Application Composer):你打開 Application Composer,拖入一個 API Gateway 和一個 Lambda。你畫一條線把它們連起來。Application Composer 會在背後自動幫你寫好 AWS SAM 語法 的 template.yaml 檔案。
  2. 開發與部署階段 (使用 AWS SAM CLI):你在電腦上打開終端機 (Terminal)。你使用 SAM 的指令(如 sam build 和 sam deploy)來讀取剛剛 Composer 生成的那個檔案。SAM CLI 負責將這個檔案轉換成 CloudFormation 並推送到 AWS 雲端進行部署。

3. 為什麼有了 SAM 還需要 Composer?

如果你直接手寫 AWS SAM 的 YAML 檔,常常會遇到這些痛苦:

  • 語法繁瑣: 縮排錯一格就報錯。
  • 屬性難記: 忘記 DynamoDB 的屬性名稱是 AttributeName 還是 AttributeDefinitions。
  • 權限頭痛: 忘記給 Lambda 讀取 S3 的 IAM 權限,導致部署後跑不動。

Application Composer 的價值就在於它幫你處理上述這些繁瑣的細節,自動生成正確的 SAM 語法,並自動補上缺少的權限設定。

總結

  • AWS SAM 是 Serverless 的**「語言」與「部署引擎」**。
  • AWS Application Composer 是用來更輕鬆撰寫這個語言的**「畫圖工具」**。

建議用法: 用 Composer 來起草架構(因為快且不具語法錯誤),然後用 SAM CLI 來測試與部署

留言
avatar-img
留言分享你的想法!
avatar-img
郝信華 iPAS AI應用規劃師 學習筆記
34會員
561內容數
現職 : 富邦建設資訊副理 證照:經濟部 iPAS AI應用規劃師 初級+中級(數據分析) AWS Certified AI Practitioner (AIF-C01) 其他:富邦美術館志工
2025/12/22
Cost Allocation Tags(成本分配標籤) 是 AWS 成本管理中最重要的工具之一。 一句話總結:它是貼在 AWS 資源上的「標籤 (Label)」,用來告訴你這筆錢是「誰」花的(哪個部門、哪個專案、哪個環境)。 如果沒有它,你的 AWS 帳單只會顯示「本月 EC2 花了 10,0
Thumbnail
2025/12/22
Cost Allocation Tags(成本分配標籤) 是 AWS 成本管理中最重要的工具之一。 一句話總結:它是貼在 AWS 資源上的「標籤 (Label)」,用來告訴你這筆錢是「誰」花的(哪個部門、哪個專案、哪個環境)。 如果沒有它,你的 AWS 帳單只會顯示「本月 EC2 花了 10,0
Thumbnail
2025/12/22
為了實現跨 AWS 區域 (Cross-Region) 的故障轉移 (Failover),並同時兼顧高可用性 (High Availability) 與低延遲 (Low Latency),以下是幾個最關鍵的 AWS 服務與功能: 1. 網路與流量路由層 (Traffic Management)
Thumbnail
2025/12/22
為了實現跨 AWS 區域 (Cross-Region) 的故障轉移 (Failover),並同時兼顧高可用性 (High Availability) 與低延遲 (Low Latency),以下是幾個最關鍵的 AWS 服務與功能: 1. 網路與流量路由層 (Traffic Management)
Thumbnail
2025/12/19
無狀態防火牆和有狀態防火牆是網路安全的核心機制,主要差異在於是否追蹤連線狀態。​ 運作原理 無狀態防火牆獨立檢查每個封包的標頭(如來源IP、埠號),不記錄連線狀態,需為進出流量分別設定規則。​ 有狀態防火牆維護狀態表,記錄連線(如SYN、ACK),允許回應流量自動通過,無需鏡像規則。​ 優缺
Thumbnail
2025/12/19
無狀態防火牆和有狀態防火牆是網路安全的核心機制,主要差異在於是否追蹤連線狀態。​ 運作原理 無狀態防火牆獨立檢查每個封包的標頭(如來源IP、埠號),不記錄連線狀態,需為進出流量分別設定規則。​ 有狀態防火牆維護狀態表,記錄連線(如SYN、ACK),允許回應流量自動通過,無需鏡像規則。​ 優缺
Thumbnail
看更多
你可能也想看
Thumbnail
不是每個人都適合自己操盤,懂得利用「專業」,才是績效拉開差距的開始
Thumbnail
不是每個人都適合自己操盤,懂得利用「專業」,才是績效拉開差距的開始
Thumbnail
生產力爆發帶來的過剩,會讓過去的「還可以啦」成為最低標準。市場需求對於出類拔萃、獨一無二的需求還是存在,但是對於那些價格高度敏感,或是只需要穩定、便宜、還可以啦的需求端來說,AI 正在迅速取代這部分的供給,中間長尾的服務提供者被 AI 替換。
Thumbnail
生產力爆發帶來的過剩,會讓過去的「還可以啦」成為最低標準。市場需求對於出類拔萃、獨一無二的需求還是存在,但是對於那些價格高度敏感,或是只需要穩定、便宜、還可以啦的需求端來說,AI 正在迅速取代這部分的供給,中間長尾的服務提供者被 AI 替換。
Thumbnail
年末總有一種莫名的魔力,讓人特別容易感到孤單。 聖誕節、跨年、緊接著農曆新年……滑開社群,不是甜蜜放閃,就是一群人早早訂好跨年行程。 明明日子算得上順遂,工作穩定無憂,生活也按部就班地往前走着,可總在萬籟俱寂的夜晚,獨自對着空蕩的房間時,心底會悄悄冒出一個念頭:今年,是不是可以不一樣?不再獨自抵
Thumbnail
年末總有一種莫名的魔力,讓人特別容易感到孤單。 聖誕節、跨年、緊接著農曆新年……滑開社群,不是甜蜜放閃,就是一群人早早訂好跨年行程。 明明日子算得上順遂,工作穩定無憂,生活也按部就班地往前走着,可總在萬籟俱寂的夜晚,獨自對着空蕩的房間時,心底會悄悄冒出一個念頭:今年,是不是可以不一樣?不再獨自抵
Thumbnail
如何查詢 CloudTrail Event history 使用 Event name 篩選 RequestSpotFleet CloudTrail Event history 使用 Resource name 篩選,該 Request ID (提提知道ID) 使用上述查詢,目的是為了
Thumbnail
如何查詢 CloudTrail Event history 使用 Event name 篩選 RequestSpotFleet CloudTrail Event history 使用 Resource name 篩選,該 Request ID (提提知道ID) 使用上述查詢,目的是為了
Thumbnail
由於客戶需要透過  Cost Explorer 來監控 ECS Fargate tasks 成本,ECS 設置需要的 Tag 標籤, AWS Billing (Cost allocation tags)啟用 Tag 後,還是沒出現。 原因是,ECS Cluster 本生沒有產生費用,故才未
Thumbnail
由於客戶需要透過  Cost Explorer 來監控 ECS Fargate tasks 成本,ECS 設置需要的 Tag 標籤, AWS Billing (Cost allocation tags)啟用 Tag 後,還是沒出現。 原因是,ECS Cluster 本生沒有產生費用,故才未
Thumbnail
Fleet Manager (AWS Systems Manager 的功能) 是統一的使用者界面 (UI) 體驗,可助您遠端管理在 AWS 或內部部署上執行的受管節點 利用 Fleet Manager,您可以從單一主控台檢視整個伺服器機群的運作狀態和效能狀態 Fleet Manager 有哪些
Thumbnail
Fleet Manager (AWS Systems Manager 的功能) 是統一的使用者界面 (UI) 體驗,可助您遠端管理在 AWS 或內部部署上執行的受管節點 利用 Fleet Manager,您可以從單一主控台檢視整個伺服器機群的運作狀態和效能狀態 Fleet Manager 有哪些
Thumbnail
以下是限制 S3 bucket 訪問 HTTPS 的方法 測試 S3 存儲桶訪問 S3 bucket 通常允許 HTTP 和 HTTPS 訪問 AWS CLI 預設通常使用 HTTPS 向 AWS 服務發送請求 https://docs.aws.amazon.com/zh_tw/cli/l
Thumbnail
以下是限制 S3 bucket 訪問 HTTPS 的方法 測試 S3 存儲桶訪問 S3 bucket 通常允許 HTTP 和 HTTPS 訪問 AWS CLI 預設通常使用 HTTPS 向 AWS 服務發送請求 https://docs.aws.amazon.com/zh_tw/cli/l
Thumbnail
有這一篇原因是工作上,建立 OU 時,會自動新增額外的 FullAWSAccess 規則,但原本就會有預設Root OU繼承的FullAWSAccess,等於會有兩組一樣的規則,故所以詢問了AWS Support。 先謝謝 AWS 技術支援工程師 George 細心說明~ SCP很重要的
Thumbnail
有這一篇原因是工作上,建立 OU 時,會自動新增額外的 FullAWSAccess 規則,但原本就會有預設Root OU繼承的FullAWSAccess,等於會有兩組一樣的規則,故所以詢問了AWS Support。 先謝謝 AWS 技術支援工程師 George 細心說明~ SCP很重要的
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News