本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
資源
必要Resources
章節會宣告您要包含在堆疊中的 AWS 資源,例如 Amazon EC2 執行個體或 Amazon S3 儲存貯體。
語法
Resources
區段由索引鍵名稱 Resources
組成。下列虛擬範本概述 Resources
區段:
JSON
"Resources" : { "
Logical ID of resource
" : { "Type" : "Resource type
", "Properties" : {Set of properties
} } }
YAML
Resources:
Logical ID of resource
: Type:Resource type
Properties:Set of properties
資源欄位
- 邏輯 ID (也稱為邏輯名稱)
-
邏輯 ID 必須是英數字元 (A-Za-z0-9),而且在範本內必須是唯一的。使用邏輯名稱來參考範本之其他部分中的資源。例如,如果您想要將 Amazon Elastic Block Store 磁碟區映射至 Amazon EC2 執行個體,則請參考邏輯 ID,以建立區塊存放區與執行個體的關聯。
除了邏輯 ID 之外,特定資源也會有實體 ID,這是該資源的實際指派名稱 (例如 EC2 執行個體 ID 或 S3 儲存貯體名稱)。使用實體 ID 來識別 AWS CloudFormation 範本以外的資源,但必須在建立資源之後才能識別。例如,假設您為 EC2 執行個體資源指定邏輯 ID
MyEC2Instance
。 AWS CloudFormation 建立執行個體時,會 AWS CloudFormation 自動產生實體 ID (例如i-28f9ba55
) 給執行個體。您可以使用此實體 ID 來識別執行個體,以及使用 Amazon EC2 主控台來檢視其屬性 (例如 DNS 名稱)。針對支援自訂名稱的資源,您可以指派自己的名稱 (實體 ID),協助您快速識別資源。例如,您可以將存放日誌的 S3 儲存貯體命名為MyPerformanceLogs
。如需詳細資訊,請參閱 名稱類型。 - 資源類型
-
資源類型可識別您所宣告的資源類型。例如,
AWS::EC2::Instance
宣告 EC2 執行個體。如需所有資源類型的清單,請參閱 AWS 資源和屬性類型參考。 - 資源屬性
-
資源屬性是您可以為資源指定的額外選項。例如,針對每個 EC2 執行個體,您必須指定該執行個體的 Amazon Machine Image (AMI) ID。您可以宣告 AMI ID 作為執行個體的屬性,如下列範例所示:
範例 JSON
"Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-0ff8a91507f77f867" } } }
範例 YAML
Resources: MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-0ff8a91507f77f867"
如果資源不需要宣告屬性,請略過該資源的屬性區段。
屬性值可以是常值字串、字串清單、布林值、參數參考、虛擬參考,或函數所傳回的值。下列範例顯示如何宣告不同的屬性值類型:
範例 JSON
"Properties" : { "String" : "one-string-value", "Number" : 123, "LiteralList" : [ "first-value", "second-value" ], "Boolean" : true, "ReferenceForOneValue" : { "Ref" : "MyLogicalResourceName" } , "FunctionResultWithFunctionParams" : { "Fn::Join" : [ "%", [ "Key=", { "Ref" : "MyParameter" } ] ] } }
範例 YAML
Properties: String: OneStringValue String: A longer string value Number: 123 LiteralList: - "[first]-string-value with a special characters" - "[second]-string-value with a special characters" Boolean: true ReferenceForOneValue: Ref: MyLogicalResourceName ReferenceForOneValueShortCut: !Ref MyLogicalResourceName FunctionResultWithFunctionParams: !Sub | Key=%${MyParameter}
您可以建立條件與資源的關聯,有條件地建立資源。您必須在範本的 Conditions
區段中定義條件。
範例
下列範例顯示資源宣告。它定義兩個資源。MyInstance
資源包含 MyQueue
資源,以作為其 UserData
屬性的一部分:
JSON
"Resources" : { "MyInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "Queue=", { "Ref" : "MyQueue" } ] ] } }, "AvailabilityZone" : "us-east-1a", "ImageId" : "ami-0ff8a91507f77f867" } }, "MyQueue" : { "Type" : "AWS::SQS::Queue", "Properties" : { } } }
YAML
Resources: MyInstance: Type: "AWS::EC2::Instance" Properties: UserData: "Fn::Base64": !Sub | Queue=${MyQueue} AvailabilityZone: "us-east-1a" ImageId: "ami-0ff8a91507f77f867" MyQueue: Type: "AWS::SQS::Queue" Properties: {}