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

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

一般範本程式碼片段

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

Base64編碼UserData屬性

此範例顯示使用Fn::Base64Fn::Join函數的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使用AccessKey和編碼UserData屬性 SecretKey

此範例顯示使用Fn::Base64Fn::Join函數的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參數的預設值為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 屬性不會遮罩任何儲存在下列資訊中的資訊:

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

重要

建議您使用堆疊 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::StackNameAWS::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的對應鍵相符時 StopSlowDown,會提供指派給對應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"