本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CloudFormation 範本Outputs語法
選用Outputs
區段會宣告堆疊的輸出值。這些輸出值可用各種方式使用:
-
擷取資源的重要詳細資訊 – 輸出是擷取資源重要資訊的便利方式。例如,您可以輸出堆疊的 S3 儲存貯體名稱,以更輕鬆地找到儲存貯體。您可以在 CloudFormation 主控台的輸出索引標籤中或使用 CLI describe-stacks 命令來檢視輸出值。
-
跨堆疊參考 – 您可以將輸出值匯入其他堆疊,以在堆疊之間建立參考。當您需要在多個堆疊之間共用資源或組態時,這會很有幫助。
重要
CloudFormation 不會編輯或混淆您包含在 Outputs
區段中的任何資訊。我們強烈建議您不要使用此區段來輸出敏感資訊,例如密碼或秘密。
堆疊操作完成後,可使用輸出值。當堆疊狀態處於任何IN_PROGRESS
狀態時,堆疊輸出值無法使用。我們不建議在服務執行階段和堆疊輸出值之間建立相依性,因為輸出值可能無法在任何時候都可用。
語法
Outputs
區段由索引鍵名稱 Outputs
組成。您最多可以在範本中宣告 200 個輸出。
下列範例示範 Outputs
區段的結構。
JSON
使用括號括住所有輸出宣告。使用逗號分隔多個輸出。
"Outputs" : { "
OutputLogicalID
" : { "Description" : "Information about the value
", "Value" : "Value to return
", "Export" : { "Name" : "Name of resource to export
" } } }
YAML
Outputs:
OutputLogicalID
: Description:Information about the value
Value:Value to return
Export: Name:Name of resource to export
輸出欄位
Outputs
區段可以包含下列欄位。
- 邏輯 ID (也稱為邏輯名稱)
-
目前輸出的識別碼。邏輯 ID 必須是英數字元 (
a–z
、A–Z
、0–9
),而且在範本內必須是唯一的。 Description
(選用)-
String
類型,說明輸出值。描述宣告值的長度必須是介於 0 與 1024 位元組之間的常值字串。您不能使用參數或函數來指定描述。 Value
(必要)-
describe-stacks 命令所傳回的屬性值。輸出值可以包含常值、參數參考、虛擬參數、映射值或內部函數。
Export
(選用)-
要針對跨堆疊參考匯出的資源輸出名稱。
您可以使用內部函數來自訂匯出的
Name
值。如需詳細資訊,請參閱從部署的 CloudFormation 堆疊取得匯出的輸出。
若要建立條件與輸出的關聯,請在範本的 Conditions 區段中定義條件。
範例
下列範例說明堆疊輸出的運作方式。
堆疊輸出
在下列範例中,只有在 BackupLoadBalancerDNSName
條件為 true 時,名為 BackupLoadBalancer
的輸出才會傳回邏輯 ID 為 CreateProdResources
之資源的 DNS 名稱 名為 的輸出會InstanceID
傳回 EC2 執行個體的 ID,邏輯 ID 為 EC2Instance
。
JSON
"Outputs" : { "BackupLoadBalancerDNSName" : { "Description": "The DNSName of the backup load balancer", "Value" : { "Fn::GetAtt" : [ "BackupLoadBalancer", "DNSName" ]}, "Condition" : "CreateProdResources" }, "InstanceID" : { "Description": "The Instance ID", "Value" : { "Ref" : "EC2Instance" } } }
YAML
Outputs: BackupLoadBalancerDNSName: Description: The DNSName of the backup load balancer Value: !GetAtt BackupLoadBalancer.DNSName Condition: CreateProdResources InstanceID: Description: The Instance ID Value: !Ref EC2Instance
使用 自訂匯出名稱 Fn::Sub
在下列範例中,名為 StackVPC
的輸出會傳回 VPC 的 ID,然後匯出跨堆疊參考的值,亦即將名稱 VPCID
附加至堆疊名稱。
JSON
"Outputs" : { "StackVPC" : { "Description" : "The ID of the VPC", "Value" : { "Ref" : "MyVPC" }, "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-VPCID" } } } }
YAML
Outputs: StackVPC: Description: The ID of the VPC Value: !Ref MyVPC Export: Name: !Sub "${AWS::StackName}-VPCID"
如需 Fn::Sub
函數的詳細資訊,請參閱「Fn::Sub」。
使用 自訂匯出名稱 Fn::Join
您也可以使用 Fn::Join
函數,根據參數、資源屬性和其他字串建構值。
下列範例使用 Fn::Join
函數來自訂匯出名稱,而非 Fn::Sub
函數。範例Fn::Join
函數VPCID
使用冒號做為分隔符號,將堆疊名稱與名稱串連。
JSON
"Outputs" : { "StackVPC" : { "Description" : "The ID of the VPC", "Value" : { "Ref" : "MyVPC" }, "Export" : { "Name" : { "Fn::Join" : [ ":", [ { "Ref" : "AWS::StackName" }, "VPCID" ] ] } } } }
YAML
Outputs: StackVPC: Description: The ID of the VPC Value: !Ref MyVPC Export: Name: !Join [ ":", [ !Ref "AWS::StackName", VPCID ] ]
如需 Fn::Join
函數的詳細資訊,請參閱「Fn::Join」。
傳回使用 建構的 URL Fn::Join
在建立 WordPress 網站的範本的下列範例中, InstallURL
是函數呼叫傳回的字串,該Fn::Join
函數呼叫會串連 http://
、資源的 DNS 名稱 ElasticLoadBalancer
和 /wp-admin/install.php
。輸出值可能類似以下內容:
http://mywptests-elasticl-1gb51l6sl8y5v-206169572.aws-region
.elb.amazonaws.com/wp-admin/install.php
JSON
{ "Outputs": { "InstallURL": { "Value": { "Fn::Join": [ "", [ "http://", { "Fn::GetAtt": [ "ElasticLoadBalancer", "DNSName" ] }, "/wp-admin/install.php" ] ] }, "Description": "Installation URL of the WordPress website" } } }
YAML
Outputs: InstallURL: Value: !Join - '' - - 'http://' - !GetAtt - ElasticLoadBalancer - DNSName - /wp-admin/install.php Description: Installation URL of the WordPress website
如需 Fn::Join
函數的詳細資訊,請參閱「Fn::Join」。