資源 - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

資源

必要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: {}