一般範本程式碼片段 - AWS CloudFormation

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

一般範本程式碼片段

下列範例顯示不是特定於某個 AWS 服務的不同範 AWS CloudFormation 本功能。

編碼 UserData 屬性

此範例顯示使用 Fn:: Base64 和 Fn:: 連接功能組裝 UserData 屬性。參考 MyValueMyName 是必須在範本 Parameters (參數) 區段中定義的參數。文字字串 Hello World 只是本範例傳入,屬於 UserData 的另一個值。

JSON

"UserData" : { "Fn::Base64" : { "Fn::Join" : [ ",", [ { "Ref" : "MyValue" }, { "Ref" : "MyName" }, "Hello World" ] ] } }

YAML

UserData: Fn::Base64: !Sub | Ref: MyValue Ref: MyName Hello World

使用和的 Base64 編碼 UserData 屬性 AccessKey SecretKey

此範例顯示使用 Fn:: Base64 和 Fn:: 連接功能組裝 UserData 屬性。它包含 AccessKeySecretKey 資訊。參考 AccessKeySecretKey 是必須在範本 Parameters (參數) 區段中定義的參數。

JSON

"UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "ACCESS_KEY=", { "Ref" : "AccessKey" }, "SECRET_KEY=", { "Ref" : "SecretKey" } ] ] } }

YAML

UserData: Fn::Base64: !Sub | ACCESS_KEY=${AccessKey} SECRET_KEY=${SecretKey}

具有一個文字字串參數的 Parameters (參數) 區段

下列範例說明有效的 Parameters (參數) 區段宣告,在此宣告單一 String 類型參數。

JSON

"Parameters" : { "UserName" : { "Type" : "String", "Default" : "nonadmin", "Description" : "Assume a vanilla user if no command-line spec provided" } }

YAML

Parameters: UserName: Type: String Default: nonadmin Description: Assume a vanilla user if no command-line spec provided

字串參數使用一般表達式限制條件的 Parameters (參數) 區段

下列範例說明有效的 Parameters (參數) 區段宣告,在此宣告單一 String 類型參數。此 AdminUserAccount 參數的預設值為管理員。此參數值長度下限為 1 個字元、長度上限為 16 個字元,而且包含英數字元,但必須以字母字元開頭。

JSON

"Parameters" : { "AdminUserAccount": { "Default": "admin", "NoEcho": "true", "Description" : "The admin account user name", "Type": "String", "MinLength": "1", "MaxLength": "16", "AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*" } }

YAML

Parameters: AdminUserAccount: Default: admin NoEcho: true Description: The admin account user name Type: String MinLength: 1 MaxLength: 16 AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*'

帶有 MinValue 和 MaxValue 約束的數字參數的參數部分

下列範例說明有效的 Parameters (參數) 區段宣告,在此宣告單一 Number 類型參數。 WebServerPort 參數的預設值為 80,最小值為 1 和最大值 65535。

JSON

"Parameters" : { "WebServerPort": { "Default": "80", "Description" : "TCP/IP port for the web server", "Type": "Number", "MinValue": "1", "MaxValue": "65535" } }

YAML

Parameters: WebServerPort: Default: 80 Description: TCP/IP port for the web server Type: Number MinValue: 1 MaxValue: 65535

帶有 AllowedValues 約束的數字參數的參數部分

下列範例說明有效的 Parameters (參數) 區段宣告,在此宣告單一 Number 類型參數。此 WebServerPort 參數的預設值為 80,而且只允許 80 和 8888 的值。

JSON

"Parameters" : { "WebServerPortLimited": { "Default": "80", "Description" : "TCP/IP port for the web server", "Type": "Number", "AllowedValues" : ["80", "8888"] } }

YAML

Parameters: WebServerPortLimited: Default: 80 Description: TCP/IP port for the web server Type: Number AllowedValues: - 80 - 8888

具有一個常值參數的 CommaDelimitedList 參數部分

下列範例說明有效的 Parameters (參數) 區段宣告,在此宣告單一 CommaDelimitedList 類型參數。 NoEcho 屬性設定為TRUE,這會在aws cloudformation describe-stacks輸出中以星號 (*****) 遮罩其值,但儲存在以下指定位置的資訊除外。

重要

使用 NoEcho 屬性不會遮罩任何儲存在下列資訊中的資訊:

  • Metadata板部分。 CloudFormation 不會轉換、修改或密文Metadata章節中包含的任何資訊。如需詳細資訊,請參閱 中繼資料

  • Outputs 範本區段。如需詳細資訊,請參閱 輸出

  • 資源定義的 Metadata 屬性。如需詳細資訊,請參閱 Metadata 屬性

我們強烈建議您不要使用這些機制來包含敏感資訊,例如密碼或秘密。

重要

我們建議您使用堆疊 CloudFormation 範本中的動態參數來參照儲存和管理之外的敏感資訊 (例如 CloudFormation,在 Par AWS Systems Manager ameter Store 或),而不是直接在範本中嵌入敏感資訊 AWS Secrets Manager。

如需詳細資訊,請參閱最請勿在您的範本中內嵌憑證佳做法。

JSON

"Parameters" : { "UserRoles" : { "Type" : "CommaDelimitedList", "Default" : "guest,newhire", "NoEcho" : "TRUE" } }

YAML

Parameters: UserRoles: Type: CommaDelimitedList Default: "guest,newhire" NoEcho: true

參數值以虛擬參數為基礎的 Parameters (參數) 區段

以下範例顯示 EC2 使用者資料中使用虛擬參數 AWS::StackNameAWS::Region 的命令。如需這些虛擬參數的詳細資訊,請參閱虛擬參數參考

JSON

"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -xe\n", "yum install -y aws-cfn-bootstrap\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --region ", { "Ref" : "AWS::Region" }, "\n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource WebServerGroup ", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]}} }

YAML

UserData: Fn::Base64: !Sub | #!/bin/bash -xe yum update -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --region ${AWS::Region} /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerGroup --region ${AWS::Region}

有三個映射的 Mapping (映射) 區段

以下範例說明包含三個映射之有效的 Mapping (映射) 區段宣告。符合 StopSlowDownGo 映射金鑰時,映射會提供指派給所對應 RGBColor 屬性的 RGB 值。

JSON

"Mappings" : { "LightColor" : { "Stop" : { "Description" : "red", "RGBColor" : "RED 255 GREEN 0 BLUE 0" }, "SlowDown" : { "Description" : "yellow", "RGBColor" : "RED 255 GREEN 255 BLUE 0" }, "Go" : { "Description" : "green", "RGBColor" : "RED 0 GREEN 128 BLUE 0" } } }

YAML

Mappings: LightColor: Stop: Description: red RGBColor: "RED 255 GREEN 0 BLUE 0" SlowDown: Description: yellow RGBColor: "RED 255 GREEN 255 BLUE 0" Go: Description: green RGBColor: "RED 0 GREEN 128 BLUE 0"

以文字字串為基礎的說明

以下範例說明有效的 Description (說明) 區段宣告,其值是以文字字串為基礎。此程式碼片段適用於範本、參數、資源、屬性或輸出。

JSON

"Description" : "Replace this value"

YAML

Description: "Replace this value"

具有一個文字字串輸出的 Outputs (輸出) 區段

此範例示範以文字字串為基礎的輸出指派。

JSON

"Outputs" : { "MyPhone" : { "Value" : "Please call 555-5555", "Description" : "A random message for aws cloudformation describe-stacks" } }

YAML

Outputs: MyPhone: Value: Please call 555-5555 Description: A random message for aws cloudformation describe-stacks

具有一個資源參考和一個虛擬參考輸出的 Outputs (輸出) 區段

此範例示範具有兩個輸出指派的 Outputs (輸出) 區段。一個以資源為基礎,另一個以虛擬參考為基礎。

JSON

"Outputs" : { "SNSTopic" : { "Value" : { "Ref" : "MyNotificationTopic" } }, "StackName" : { "Value" : { "Ref" : "AWS::StackName" } } }

YAML

Outputs: SNSTopic: Value: !Ref MyNotificationTopic StackName: Value: !Ref AWS::StackName

具有輸出的 Outputs (輸出) 區段,此輸出以函數、文字字串、參考和虛擬參數為基礎

此範例示範具有一個輸出指派的 Outputs (輸出) 區段。使用 Join 函數串連值,百分比符號為分隔符號。

JSON

"Outputs" : { "MyOutput" : { "Value" : { "Fn::Join" : [ "%", [ "A-string", {"Ref" : "AWS::StackName" } ] ] } } }

YAML

Outputs: MyOutput: Value: !Join [ %, [ 'A-string', !Ref 'AWS::StackName' ]]

範本格式版本

下列程式碼片段說明有效的 Template Format Version (範本格式版本) 區段宣告。

JSON

"AWSTemplateFormatVersion" : "2010-09-09"

YAML

AWSTemplateFormatVersion: '2010-09-09'

AWS 標籤屬性

此範例顯示「標 AWS 籤」屬性。您可以在資源的 Properties (屬性) 區段內指定此屬性。資源建立後,會以您宣告的標籤標記。

JSON

"Tags" : [ { "Key" : "keyname1", "Value" : "value1" }, { "Key" : "keyname2", "Value" : "value2" } ]

YAML

Tags: - Key: "keyname1" Value: "value1" - Key: "keyname2" Value: "value2"