AWS CloudFormation 常見問答集

一般問題

AWS CloudFormation 是一種讓開發人員和企業都能輕鬆建立相關 AWS 和第三方資源集合,並按順序和可預測的方式進行佈建與管理的服務。

開發人員可以採用簡單的宣告式風格部署和更新運算、資料庫和其他資源,免除特定資源 API 的複雜度。AWS CloudFormation 的設計是為了以可重複、可預測且安全的方式管理資源生命週期,同時支援自動轉返、自動狀態管理,以及跨帳戶及區域資源的管理。最新的增強功能和選項支援多種建立資源的方式,包括在高階語言程式碼中使用 AWS CDK、匯入現有資源、偵測組態不一致,以及新的登錄,可讓您輕鬆建立能繼承多項核心 CloudFormation 優勢的自訂類型。

這些服務的設計目的是使二者相輔相成。 AWS Elastic Beanstalk 提供可在雲端輕鬆部署和執行應用程式的環境。它與開發人員工具整合,並提供管理應用程式生命週期的一站式體驗。如果您的工作負載可以作為 Elastic Beanstalk 工作負載進行管理,當您建立和更新應用程式時,可以享受更的體驗。Elastic Beanstalk 在幕後使用 CloudFormation 建立和管理資源。如果您的應用程式要求更多自訂控制,CloudFormation 的其他功能可提供更多控制工作負載的選項。

AWS CloudFormation 是一種便捷的佈建機制,適用於眾多 AWS 和第三方資源。它支援許多不同應用程式類型的基礎設施需求,例如現有的企業應用程式、傳統應用程式、使用各種 AWS 資源建立的應用程式,以及以容器為基礎的解決方案 (包括使用 AWS Elastic Beanstalk 建立的解決方案)。

AWS CloudFormation 支援 Elastic Beanstalk 應用程式環境,將其作為其中一種 AWS 資源類型。例如,這可讓您建立和管理 AWS Elastic Beanstalk 託管的應用程式和 RDS 資料庫,用於存放應用程式資料。還可在群組中新增任何其他支援的 AWS 資源。

CloudFormation 引入了四種新概念:範本是 JSON 或 YAML 格式的宣告式程式碼檔案,描述部署應用程式需要的一切資源的所需狀態。堆疊會實作及管理範本中概述的資源群組,並允許您統一管理這些資源的狀態和相依性。變更集是即將由堆疊操作執行,以建立、更新或移除資源的變更的預覽。堆疊集是統一管理的一組堆疊,可用於複寫群組。

若要查看支援的 AWS 資源完整清單及其功能,請參閱文件發行記錄的支援的 AWS 服務頁面。

AWS CloudFormation Registry 和 AWS CloudFormation 自訂資源可讓您管理其他 AWS 和第三方資源。

是的,可以。CloudFormation 不會妨礙您;您保留對基礎設施所有元素的完整控制,並可繼續使用現有的 AWS 和第三方工具管理 AWS 資源。然而,由於 CloudFormation 支援其他規則、最佳實務及合規控制,我們建議您允許 CloudFormation 管理資源的變更。此一可預測的受控方式可協助管理在應用程式組合間數以百計或千計的資源。

CloudFormation 範本是 JSON 或 YAML 格式的文字檔案,由五種元素組成:

1.選用的範本參數清單 (堆疊建立時提供的輸入值)
2.選用的輸出數值清單 (例如 Web 應用程式的完整 URL)
3.選用的資料表清單,用於查詢靜態設定數值 (例如 AMI 名稱)
4.AWS 資源及其設定值的清單
5.範本檔案格式版本號碼

建構堆疊時,參數是用來自訂範本在執行時間的各種行為。例如,建立堆疊時,您可以將 Amazon RDS 資料庫大小、Amazon EC2 執行個體類型、資料庫和 Web 伺服器連接埠號碼傳輸到 AWS CloudFormation。每個參數可以使用預設值和描述,也可標記為 "NoEcho",以隱藏您在螢幕上以及 AWS CloudFormation 事件日誌中輸入的實際數值。建立 AWS CloudFormation 堆疊時,AWS 管理主控台將自動合成並顯示一個彈出式對話表單,供您編輯參數值。

輸出數值可以透過 AWS 管理主控台或命令列工具,以便向使用者顯示堆疊的重要資源 (例如 Elastic Load Balancing 負載平衡器或 Amazon RDS 資料庫的位址)。您可以使用簡單函數,將字串以及與實際 AWS 資源關聯的屬性值串連。範本也可以利用登錄資源類型、您的自訂私有類型、您的巨集,以及從 AWS Secrets Manager 和 AWS System Manager Parameter Store 擷取組態參數。

您可以在範本中為 AWS 資源指派邏輯名稱。建立堆疊時,AWS CloudFormation 會將邏輯名稱綁定到對應的實際 AWS 資源名稱。實際資源名稱是堆疊和邏輯資源名稱的組合。這樣就可以從一個範本建立多個堆疊,而不必擔心 AWS 資源名稱衝突。

雖然 AWS CloudFormation 可讓您命名某些資源 (例如 Amazon S3 儲存貯體),不過 CloudFormation 不允許命名所有資源。命名資源會限制範本的重複使用性,而且當更新導致需要取代資源時,會造成命名衝突。為盡量減少這些問題,CloudFormation 會依個別情況決定是否支援資源命名。

是。AWS CloudFormation 提供一組應用程式引導指令碼,您只需在 CloudFormation 範本中加以描述,即可在 EC2 執行個體上安裝套件、檔案和服務。有關詳細資訊和操作說明,請參閱透過 AWS CloudFormation 啟動載入應用程式

CloudFormation 也可以與 System Manager 整合,使用 System Manager 自動化文件驅動和維護軟體安裝。

是。AWS CloudFormation 可用於在 EC2 執行個體中引導 Chef Server 和 Chef Client 軟體。有關詳細資訊和操作說明,請參閱 整合 AWS CloudFormation 和 Chef

是。AWS CloudFormation 可用於在 EC2 執行個體中引導 Puppet Master 和 Puppet Client 軟體。有關詳細資訊和操作說明,請參閱整合 AWS CloudFormation 和 Puppet。

是。CloudFormation 可以引導在 EC2 執行個體上的 Terraform 引擎,您可以使用 Terraform 資源供應程式,在堆疊中建立資源、運用堆疊狀態管理、相依性、穩定化和復原。

是。支援標記功能的 Amazon EC2 資源也可在 AWS 範本中加上標籤。標籤值可以引用範本參數、其他資源名稱、資源屬性值 (如位址),或者由簡單函數 (如串接的字串清單) 計算而得到的值。CloudFormation 使用所屬 CloudFormation 堆疊的名稱,自動為 Amazon EBS 磁碟區和 Amazon EC2 執行個體加上標籤。

是。您可以使用簡單函數來串接字串和 AWS 資源的屬性數值,並將它們傳遞到範本中的使用者資料欄位。請參閱我們的範例範本,進一步了解這些易用的函數。

預設情況下,會啟用「錯誤時自動轉返」功能。這會指示 CloudFormation 只有在所有個別操作都成功時,才建立或更新堆疊內的所有資源。否則,CloudFormation 會將堆疊恢復至上次的已知穩定組態。例如,當您意外超過了 Elastic IP 地址的預設限制,或者無權存取要嘗試執行的 EC2 AMI 時,可以使用此功能。使用此功能可讓您根據已成功建立堆疊或完全未建立堆疊這兩種情況,簡化系統管理以及以 CloudFormation 為基礎建構的分層式解決方案。

是。CloudFormation 提供的選項之一是 WaitCondition 資源,其功能為一屏障,在從您的應用程式或管理系統等外部資源收到完成訊號前,阻止其他資源的建立。其他選項包括使用 AWS Lambda 函數建立自訂邏輯。

是。CloudFormation 允許您在範本中定義資源的刪除政策。您可以指定在刪除 Amazon EBS 磁碟區或 Amazon RDS 資料庫執行個體前為它們建立快照。也可以指定在刪除堆疊時應保留的資源,不要將其刪除。如果要在刪除堆疊時保留 Amazon S3 儲存貯體,可以使用此功能。

是。CloudFormation 支援建立 VPC、子網路、閘道、路由表和網路 ACL,還支援在 VPC 中建立彈性 IP、Amazon EC2 執行個體、EC2 安全群組、Auto Scaling 群組、Elastic Load Balancer、Amazon RDS 資料庫執行個體和 Amazon RDS 安全群組等資源。

是。您可以使用 CloudFormation,以可控制且可預測的方式修改和更新現有堆疊中的資源。透過使用範本來管理堆疊變更,您就可以對 AWS 基礎設施套用版本控制,如同您對基礎設施上執行之軟體套用版本控制的方法一樣。

是! 有了 Resource Import,您可以使用資源匯入將現有資源納入 AWS CloudFormation 的管理範圍。

入門

若要註冊 CloudFormation,請按一下 CloudFormation 產品頁面上的建立免費帳戶。註冊後,請參閱 CloudFormation 文件,其中包含入門指南。

CloudFormation 註冊要求您在 AWS 上登記有效電話號碼和電子郵件地址,以便我們需要聯繫您時使用。驗證您的電話號碼只需要幾分鐘時間。註冊過程中您會接到一通自動電話,然後需要您使用電話鍵盤輸入 PIN 碼。

了解如何開始使用 CloudFormation 的最佳方式就是仔細閱讀包含在技術文件中的入門指南。只需短短幾分鐘,您就能部署和使用我們提供的其中一個範例範本,這些範本示範如何建立執行 WordPress 等應用程式所需的基礎設施。有各式各樣的其他 CloudFormation 培訓資源,包括第三方課程供應商和 Web 上的教學和文章。如需詳細資訊,請參閱 CloudFormation 資源

有的,CloudFormation 提供範例範本,您可以用來測試執行相關服務,並了解其功能。我們的範例範本會解說如何按照多個可用區域冗餘、擴展和發出警示的最佳實務,以協調的方式互相連接和使用多種 AWS 資源。若要開始使用,您只需前往 AWS 管理主控台,按一下建立堆疊,然後按照步驟選擇和啟動其中一個範例即可。建立後,在主控台中選擇您的堆疊,並檢閱範本和參數標籤,以查看用於建立各個堆疊的範本檔案詳細資訊。範例範本也可以在 GitHub 上取得。

AWS CloudFormation Registry

AWS CloudFormation Registry 是一項受管服務,可讓您登錄、使用和發現 AWS 及第三方資源類型。第三方資源類型必須先登記,才可使用 AWS CloudFormation 範本佈建這些資源。如需詳細資訊,請參閱文件中的使用 AWS CloudFormation 登錄

資源供應程式是一組包含規格和處理常式的資源類型,該常式透過建立、讀取、更新、刪除和列出操作控制基礎資源的生命週期。您可以使用資源供應程式,利用 CloudFormation 建模和佈建資源。例如:AWS::EC2::Instance 即為來自 Amazon EC2 供應程式的資源類型。您可以使用 CloudFormation,利用此類型建模並佈建 Amazon EC2 執行個體。若使用 CloudFormation Registry,您可以建立並使用資源供應程式建模和佈建第三方資源,例如 SaaS 監控、團隊生產力或原始碼管理資源。

AWS 和第三方資源供應程式的差別在於其來源。AWS 資源供應程式是由 Amazon 和 AWS 建立和維護,目的是管理 AWS 資源和服務。例如:三個 AWS 資源供應程式協助您管理 Amazon DynamoDB、AWS Lambda 和 Amazon EC2 資源。這些供應程式包括的資源類型如:AWS::DynamoDB::Table、AWS::Lambda::Function 和 AWS::EC2::Instance。如須完整參考資訊,請瀏覽文件。

第三方資源供應程式是由其他公司、組織或開發人員社群所建立。能夠幫忙您管理 AWS 及非 AWS 資源,例如 AWS 應用程式資源和非 AWS SaaS 軟體服務,例如:監控、團隊生產力、事件管理或版本控制管理工具。

資源結構描述以結構化和一致的格式定義資源類型。此結構描述也用於驗證資源類型的定義。結構描述包括特定資源類型的所有支援參數和屬性,以及使用可能的最低權限建立資源時必要的許可。

使用 AWS CloudFormation CLI 建立資源供應程式。您可以從定義簡單的資源宣告結構描述開始,其中包含必要的許可以及與其他資源的關係。接著,使用 CloudFormation CLI 產生適用於資源生命週期常式(建立、讀取、更新、刪除和列出)的鷹架,以及單元和整合測試用的測試虛設常式。

您可以使用開放原始碼 AWS CloudFormation CLI 或直接叫用透過 AWS 軟體開發套件和 AWS CLI 提供的 RegisterType 及相關登錄 API。如需詳細資訊,請參閱文件中的使用 AWS CloudFormation 登錄。AWS 資源供應程式立即可用,使用前不需要其他登錄步驟。

AWS CloudFormation Public Registry

CloudFormation Registry 於 2019 年 11 月推出,由私有清單組成,可讓客戶針對其私人用途擴展 CloudFormation。Public Registry 擴展了 CloudFormation Registry,並新增了一個公共、可搜尋的中央位置,用於共用、尋找、取用和管理資源類型和模組 <>,從而更輕鬆地以一致的方式為 AWS 和第三方產品設定和管理基礎設施和應用程式。

是。請參閱 AWS CloudFormation 定價頁面

是。在 CloudFormation Public Registry 中,您可以存取經驗證的發佈者提供的策管內容。首先,我們使用 AWS Marketplace 或 GitHub 和 Bitbucket 之類的第三方驗證每個發佈者的身分。

CloudFormation Public Registry 是一種新的可搜尋和受管擴展型錄,其中包含 AWS 合作夥伴網 (APN) 合作夥伴和開發人員社群發佈的資源類型 (佈建邏輯) 和模組。藉由 CloudFormation Public Registry,任何人現在都可在 Registry 上發佈資源類型和模組。客戶可以輕鬆探索和使用這些發佈的資源類型和模組,而無需自行建置和維護。

資源類型是一種包含佈建邏輯的程式碼封包,可讓您從建立到刪除管理 Amazon EC2 執行個體或 Amazon DynamoDB 資料表等資源的生命週期。資源類型包含定義資源形狀和屬性的結構描述,以及用於佈建、更新、刪除和描述資源的必要邏輯。CloudFormation Public Registry 中的範例第三方資源類型為 Datadog 監視器、MongoDB Atlas 專案或 Atlassian Opsgenie 使用者。

模組是可以在多個 CloudFormation 範本中重複使用的建置區塊,並且就像原生 CloudFormation 資源一樣使用。這些建置區塊可以用於單個資源,例如定義 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的最佳實務,也可以用於多個資源,以定義應用程式架構的通用模式。

您可以參考此連結開發和新增自己的資源或模組至 AWS CloudFormation Registry。您可以選擇私下發佈或發佈到 Public Registry。

計費

使用 AWS CloudFormation 搭配以下命名空間的資源供應程式:AWS::*、Alexa::* 和 Custom::*,不收取額外費用。在此情況下,使用 AWS CloudFormation ,以手動建立資源的方式建立的 AWS 資源 (例如 Amazon EC2 執行個體、Elastic Load Balancing 負載平衡器等),需支付相關費用。您只需按實際用量付費;沒有最低費用,也不需要前期承諾。

您搭配上述命名空間以外的資源供應程式使用 AWS CloudFormation 的話,則依每次常式操作收費。常式操作是指資源上的建立、更新、刪除、讀取或列出動作。如需詳細資訊,請參閱我們的定價頁面

是。無論整個堆疊能否建立成功,範本產生實體期間建立的 AWS 資源均需收費。

限額和限制

進一步了解您可以建立的 AWS CloudFormation 堆疊的數量上限,請參閱 AWS CloudFormation 配額中的「堆疊」。請在此處填寫提高額度申請表,我們將在兩個工作天內答覆您的請求。

有關更多資訊,請參閱 AWS CloudFormation 配額中的「範本描述」,以及 AWS 文件中的參數資源輸出

進一步了解您可以在範本中指定參數和輸出的數量,請參閱 AWS CloudFormation 配額中的「輸出」章節。

進一步了解您可以在範本中聲明的資源數量,請參閱 AWS CloudFormation 配額中的「資源」。建立較小型的範本和堆疊,並在多個堆疊間將應用程式模組化,是讓資源變更的影響範圍最小化,以及更迅速地解決對多資源相依性問題的最佳實務,因為小型資源群組的相依性比大型群組簡單。

區域與端點

有關各個區域的端點,請參閱技術文件中的 AWS CloudFormation 端點

請參閱區域性產品和服務,了解 CloudFormation 在不同區域的可用性詳細資訊。

進一步了解 AWS CloudFormation 定價

參閱 AWS CloudFormation 定價頁面
準備好開始建立?
開始使用 AWS CloudFormation
還有其他問題嗎?
聯絡我們