了解如何開始使用 AWS CloudFormation 的最佳方式就是仔細閱讀包含在技術文件中的 入門指南。您可以在幾分鐘內就部署好其中一個範例範本,並開始建立自己的基礎設施組態。
AWS CloudFormation 簡介

CloudFormation 範本具有以下幾個優點:

遵循熟悉的格式:CloudFormation 範本只是一個 JSON (JavaScript Object Notation) 或 YAML 格式的文字檔,描述執行某個應用程式或服務所需的 AWS 基礎設施以及它們之間的互連關係。

管理關聯性:範本可簡潔地擷取資源關聯性,例如,EC2 執行個體必須與 Elastic Load Balancing 負載平衡器相關聯,或者 EBS 磁碟區必須與其連接的執行個體位於相同的 EC2 可用區域。

可重覆使用:使用範本參數可讓單一範本用於具有不同組態值的多個基礎設施部署,例如,要為應用程式部署幾個執行個體。

獲得有用的回饋:範本也提供輸出屬性,可將部署結果或組態資訊傳回給使用者。例如,在執行個體化時,範本可提供 Elastic Load Balancing 端點的 URL,客戶應該使用此 URL 連接到剛執行個體化的應用程式。

避免衝突:範本中的所有 AWS 資源都是以邏輯名稱加以識別,可從一個範本建立多個堆疊,不用擔心 AWS 資源之間的命名衝突。

即寫即用:可使用任何方法啟動堆疊,無需事先使用 AWS CloudFormation 註冊範本。

視覺化堆疊:CloudFormation Designer 讓您透過圖表以視覺化方式呈現範本。您可以輕鬆地檢視 AWS 資源和其關聯,並編排其版面配置,讓圖表符合您的需求。您可以使用拖放界面和整合的 JSON 編輯器編輯範本。您對圖表所做的修改會自動修改範本的 JSON。                                                                                                                                          

查詢資源:AWS CloudFormation 會保留一份堆疊範本的副本,因此您可以使用 AWS 管理主控台、命令列工具或 API,查詢堆疊建立期間套用的精確資源組態。

自動化:您可以選擇使用程式設計語言或所選工具自動產生範本,也可以選擇使用 CloudFormation API、AWS 開發套件或 AWS CLI 從範本自動建立堆疊。

範本具有下列高階 JSON 結構:

{

    "Description" : "A text description for the template usage",

    "Parameters": {

        // A set of inputs used to customize the template per deployment

    },

    "Resources" : {

        // The set of AWS resources and relationships between them

    },

    "Outputs" : {

        // A set of values to be made visible to the stack creator

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}

以下範本是說明如何建立 EC2 執行個體的簡單範例:

{

    "Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.",

    "Parameters" : {

        "KeyPair" : {

            "Description" : "The EC2 Key Pair to allow SSH access to the instance",

            "Type" : "String"

        }

    },

    "Resources" : {

        "Ec2Instance" : {

            "Type" : "AWS::EC2::Instance",

            "Properties" : {

                "KeyName" : { "Ref" : "KeyPair" },

                "ImageId" : "ami-3b355a52"

            }

        }

    },

    "Outputs" : {

        "InstanceId" : {

            "Description" : "The InstanceId of the newly created EC2 instance",

            "Value" : {

                "Ref" : "Ec2Instance"

            }

        }

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}   

使用 AWS CloudFormation 範本建立和管理堆疊

堆疊是執行個體化範本時所產生的資源集合。您可以將範本和任何必要參數提供給 AWS CloudFormation 以建立堆疊。AWS CloudFormation 會根據範本和在範本中指定的任何相依項,決定需要建立的 AWS 資源及其順序。

若要更新堆疊,所提供的範本需具有堆疊中所有資源的所需組態。您可以修改堆疊中現有資源的屬性,以反應環境中的變更或新應用程式的要求。例如,您可以變更 AWS CloudWatch 警示的警示閾值,或更新在堆疊中執行個體上執行的 AMI。AWS CloudFormation 會透過堆疊中的不同資源回復這些變更。在許多情況下,進行變更不會影響您執行中的應用程式。但是,如果無法進行動態變更 (例如,在 EC2 執行個體上更新 AMI),AWS CloudFormation 將建立新資源並將其重新接入堆疊,並在服務確定完全更新成功後,刪除舊資源。

AWS CloudFormation 將建立或更新完整的堆疊。如果無法建立或更新完整的堆疊,AWS CloudFormation 會將它回復。為了偵錯用途,可以停用轉返操作,之後再手動重試堆疊建立或更新。

您也可以使用 AWS CloudFormation Designer 建立或修改堆疊的範本,然後將範本提交給 AWS CloudFormation 以建立或更新堆疊。您可以在 AWS 管理主控台使用 AWS CloudFormation Designer。


您可以透過 AWS 管理主控台輕鬆存取 AWS CloudFormation,使用這個以 Web 為基礎的點選式界面部署和管理堆疊。只需幾個簡單步驟,您就能在 AWS 管理主控台建立、刪除和更新應用程式。

使用 AWS CloudFormation API

AWS CloudFormation 也提供一組操作方便且非常靈活的簡易 API。如需可用 AWS CloudFormation API 的完整清單,請參閱 AWS CloudFormation API Reference Guide。以下為一些最常用的 API 及其功能:

CreateStack:開始建立新堆疊。呼叫的輸入參數包括堆疊名稱和來源範本的檔名 (或 Amazon S3 URL)。如果建立堆疊的程序順利完成,堆疊將為 CREATE_COMPLETE 狀態。如果堆疊建立失敗,AWS CloudFormation 會刪除之前建立的資源,除非使用者指定旗標保留這些元素,供偵錯之用。

ListStacks:列出您帳戶中的所有堆疊。可用於檢視堆疊集及其目前狀態,例如,正在建立或更新堆疊。

ListStackResources:列出建立堆疊時建立的所有 AWS 資源名稱和識別符。除了提供資訊給您,此呼叫還可供 AWS CloudFormation 感知應用程式使用,以了解其環境。

DescribeStackEvents:列出 AWS CloudFormation 針對堆疊產生的所有操作和事件,可讓您查看建立或刪除的進行狀態。

UpdateStack:針對現有堆疊開始更新程序。呼叫的輸入參數包括堆疊名稱和更新範本的檔名 (或 Amazon S3 URL)。如果更新堆疊的程序順利完成,堆疊將為 UPDATE_COMPLETE 狀態。如果堆疊更新失敗,AWS CloudFormation 將回復所進行的任何資源變更,以便堆疊返回原始範本中所述的狀態。

還可透過 AWS 開發套件和 AWS CLI 使用 AWS CloudFormation。

AWS CloudFormation 已經與 Amazon Simple Notification Service (Amazon SNS) 完成整合,可讓您在建立、更新和刪除堆疊的過程中接收通知。除了提供狀態給您,這也可讓其他程式注意到 CloudFormation 中的事件並回應,甚至參與堆疊組態程序。

使用 AWS 資源

AWS CloudFormation 範本的設計是為了讓您善用現有的 AWS 經驗。每個資源都有一組參數,參數名稱與透過其原生 API 建立資源時所使用的名稱完全相同。下列範本片段說明如何定義 Amazon EBS 磁碟區。範本中磁碟區的邏輯名稱為 "myVolume",類型為 "AWS::EC2::Volume"。如果您之前使用過 EBS 磁碟區,那麼您對這些屬性應該很熟悉。

"myVolume" : {

    "Type" : "AWS::EC2::Volume",

    "Properties" : {

        "Size" : "10",

        "SnapshotId" : "snap-7b8fd361",

        "AvailabilityZone" : "us-east-1a"

    }

}
顯示較少 >>

引導操作應用程式和處理更新

AWS CloudFormation 提供一些可部署到 EC2 執行個體的協助程式指令碼。這些指令碼能讓您輕鬆地從堆疊讀取資源中繼資料並用於設定應用程式、將套件和檔案部署到範本中所列的執行個體,以及對組態變更或應用程式更新之類的堆疊更新做出反應。

下列是可用的指令碼:

cfn-get-metadata:在範本中擷取您的資源所連接的中繼資料。

cfn-init:下載並安裝範本中所述的套件和檔案。

cfn-signal:向堆疊建立工作流程發出信號,表示您的應用程式已啟動和執行,並準備好接受流量。

cfn-hup:監聽堆疊更新的協助程式,透過 AWS 主控台、命令列工具或直接透過 API 啟動,並執行應用程式特定的勾點以反應這些變更。

您可以單獨使用 CloudFormation 指令碼,也可以結合 CloudInit 一起使用,CloudInit 是 Amazon Linux AMI 和一些其他 Linux AMI 上提供的功能。有關引導操作應用程式和更新組態的詳細資訊,請參閱 AWS CloudFormation 開發人員資源

用途和限制

使用本服務需遵守 Amazon Web Services 客戶協議

 

進一步了解 AWS CloudFormation 定價

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