本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
一般範本程式碼片段
下列範例顯示不是特定於某個 AWS 服務的不同範 CloudFormation 本功能。
主題
- Base64編碼UserData屬性
- Base64使用AccessKey和編碼UserData屬性 SecretKey
- Parameters具有一個文字字串參數的區段
- Parameters帶有正則表達式約束的字符串參數部分
- Parameters帶有MinValue和MaxValue約束的數字參數的部分
- Parameters帶有 AllowedValues 約束的數字參數的部分
- Parameters具有一個文字CommaDelimitedList參數的部分
- Parameters具有基於偽參數的參數值的部分
- Mapping具有三個映射的部分
- Description基於文字字符串
- Outputs有一個文字字符串輸出的部分
- Outputs具有一個資源引用和一個偽參考輸出的部分
- Outputs包含以函數、常值字串、參照和虛擬參數為基礎的輸出的區段
- 範本格式版本
- AWSTags 屬性
Base64編碼UserData屬性
此範例顯示使用Fn::Base64
和Fn::Join
函數的UserData
屬性組合。參照MyValue
和MyName
是必須在範本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使用AccessKey和編碼UserData屬性 SecretKey
此範例顯示使用Fn::Base64
和Fn::Join
函數的UserData
屬性組合。它包含 AccessKey
和 SecretKey
資訊。參考 AccessKey
和 SecretKey
是必須在範本 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
參數的預設值為admin
。此參數值長度下限為 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]*'
Parameters帶有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
Parameters帶有 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
Parameters具有一個文字CommaDelimitedList參數的部分
下列範例說明宣告單一CommaDelimitedList
型別參數的有效Parameters
區段宣告。NoEcho
屬性設定為TRUE
,這將在describe-stacks輸出中以星號 (*****) 遮罩其值,但儲存在以下指定位置的資訊除外。
重要
使用 NoEcho
屬性不會遮罩任何儲存在下列資訊中的資訊:
-
模
Metadata
板部分。 CloudFormation 不會轉換、修改或密文Metadata
章節中包含的任何資訊。如需詳細資訊,請參閱 Metadata CloudFormation 範本的 區段語法參考。 -
Outputs
範本區段。如需詳細資訊,請參閱 Outputs CloudFormation 範本的 區段語法參考。 -
資源定義的
Metadata
屬性。如需詳細資訊,請參閱 Metadata 屬性。
我們強烈建議您不要使用這些機制來包含敏感資訊,例如密碼或秘密。
重要
建議您使用堆疊 CloudFormation 範本中的動態參數來參照儲存和管理之外的敏感資訊 (例如,在 Parame AWS Systems Manager ter Store 或) 中,而不是直接將機密資訊嵌入範本中 CloudFormation,而是建議您使用堆疊範本中的動態參數 AWS Secrets Manager。
如需詳細資訊,請參閱最請勿在您的範本中內嵌憑證佳做法。
JSON
"Parameters" : { "UserRoles" : { "Type" : "CommaDelimitedList", "Default" : "guest,newhire", "NoEcho" : "TRUE" } }
YAML
Parameters: UserRoles: Type: CommaDelimitedList Default: "guest,newhire" NoEcho: true
Parameters具有基於偽參數的參數值的部分
下列範例顯示使用虛擬參數AWS::StackName
和AWS::Region
的使用EC2者資料中的命令。如需這些虛擬參數的詳細資訊,請參閱虛擬參數參考。
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
區段宣告。當對映與、或Go
的對應鍵相符時 Stop
SlowDown
,會提供指派給對應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基於文字字符串
下列範例說明有效的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' ]]
範本格式版本
下面的代碼片段描述了一個有效的AWSTemplateFormatVersion
部分聲明。
JSON
"AWSTemplateFormatVersion" : "2010-09-09"
YAML
AWSTemplateFormatVersion: '2010-09-09'
AWSTags 屬性
此範例顯示 AWS Tags
屬性。您可以在資源的 Properties (屬性) 區段內指定此屬性。資源建立後,會以您宣告的標籤標記。
JSON
"Tags" : [ { "Key" : "keyname1", "Value" : "value1" }, { "Key" : "keyname2", "Value" : "value2" } ]
YAML
Tags: - Key: "keyname1" Value: "value1" - Key: "keyname2" Value: "value2"