本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範本格式
您可以使用JSON或YAML格式編寫 CloudFormation 範本。這兩種格式具有相同的目的,但在可讀性和複雜性方面提供了明顯的優勢。
-
JSON— JSON 是一種輕量級數據交換格式,易於機器解析和生成。但是,對於人類來說,讀寫可能會變得麻煩,特別是對於複雜的配置。在中JSON,範本是使用巢狀大括號
{}
和方括號[]
來定義資源、參數和其他元件的結構。它的語法需要明確聲明每個元素,這可以使模板冗長,但確保嚴格遵守結構化格式。 -
YAML— YAML 被設計為比. JSON 它使用縮進而不是大括號和括號來表示嵌套,這可以更容易地將資源和參數的層次結構視覺化。YAML通常因為它的清晰度和易用性而首選,尤其是在處理更複雜的模板時。但YAML是,如果間距不一致,則對縮進的依賴可能會導致錯誤,這需要仔細注意以保持準確性。
模板結構
CloudFormation 樣板分為不同的部分,每個部分都設計用於保存特定類型的信息。某些部分必須按特定順序聲明,對於其他部分,順序無關緊要。但是,當您建立範本時,使用下列範例中顯示的邏輯順序會很有幫助,因為某個區段中的值可能會參考上一節的值。
建立範本時,請勿使用重複的主要區段,例如Resources
區段。雖然 CloudFormation 可能會接受範本,但在處理範本時會有未定義的行為,而且可能不正確地佈建資源,或傳回莫名其妙的錯誤。
JSON
下面的例子顯示了一個 JSON-format 模板的結構與所有可用的部分。
{ "AWSTemplateFormatVersion" : "
version date
", "Description" : "JSON string
", "Metadata" : {template metadata
}, "Parameters" : {set of parameters
}, "Rules" : {set of rules
}, "Mappings" : {set of mappings
}, "Conditions" : {set of conditions
}, "Transform" : {set of transforms
}, "Resources" : {set of resources
}, "Outputs" : {set of outputs
} }
YAML
下面的例子顯示了一個 YAML-format 模板的結構與所有可用的部分。
--- AWSTemplateFormatVersion:
version date
Description:String
Metadata:template metadata
Parameters:set of parameters
Rules:set of rules
Mappings:set of mappings
Conditions:set of conditions
Transform:set of transforms
Resources:set of resources
Outputs:set of outputs
說明
在JSON格式化範本中,不支援註解。JSON根據設計,不包括註釋的語法,這意味著您不能直接在JSON結構中添加註釋。但是,如果您需要包含說明性註釋或文檔,則可以考慮添加元數據。如需詳細資訊,請參閱Metadata 屬性。
在YAML格式化的範本中,您可以使用#
符號包含內嵌註解。
下面的例子顯示了內嵌註釋的YAML模板。
AWSTemplateFormatVersion: 2010-09-09 Description: A sample CloudFormation template with YAML comments. # Resources section Resources: MyEC2Instance: Type: AWS::EC2::Instance Properties: # Linux AMI ImageId: ami-1234567890abcdef0 InstanceType: t2.micro KeyName: MyKey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20
規格
CloudFormation 支持以下JSON和YAML規格:
- JSON
-
CloudFormation 遵循 ECMA -404 JSON 標準。如需JSON格式的詳細資訊,請參閱 http://www.json.org
。 - YAML
-
CloudFormation 支援 1.1 YAML 版規格,但有少數例外。 CloudFormation 不支援下列功能:
-
binary
、omap
、pairs
、set
和timestamp
標籤 -
Aliases
-
雜湊合併
如需有關的詳細資訊YAML,請參閱 https://yaml.org/
。 -
進一步了解
對於您在範本中指定的每個資源,您可以使用JSON或的特定語法規則來定義其屬性和值YAML。如需每種格式之範本語法的詳細資訊,請參閱範本區段。