輸出 - AWS CloudFormation

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

輸出

可選Outputs部分聲明輸出值,您可以導入到其他堆棧中(以創建跨堆棧引用),響應返回(以描述堆棧調用)或在控制台上 AWS CloudFormation 查看。例如,您可以輸出堆疊的 S3 儲存貯體名稱,以更輕鬆地找到儲存貯體。

重要

CloudFormation 不會編輯或混淆您在「輸出」區段中包含的任何資訊。我們強烈建議您不要使用此區段來輸出敏感資訊,例如密碼或秘密。

堆疊操作完成後,可使用輸出值。堆疊狀態處於任何 IN_PROGRESS 狀態時,堆疊輸出值將不可用 。我們不建議在服務執行階段和堆疊輸出值之間建立相依性,因為輸出值可能無法在任何時候都可用。

語法

Outputs 區塊包含索引鍵名稱 Outputs,後面接著一個空格和一個冒號。您最多可以在範本中宣告 200 個輸出。

下列範例示範 Outputs 區段的結構。

JSON

使用括號括住所有輸出宣告。使用逗號分隔多個輸出。

"Outputs" : { "Logical ID of resource" : { "Description" : "Information about the value", "Value" : "Value to return", "Export" : { "Name" : "Name of resource to export" } } }

YAML

Outputs: Logical ID of resource: Description: Information about the value Value: Value to return Export: Name: Name of resource to export

輸出欄位

Outputs 區段可以包含下列欄位。

邏輯 ID (也稱為邏輯名稱)

目前輸出的識別碼。邏輯 ID 必須是英數字元 (a–zA–Z0–9),而且在範本內必須是唯一的。

描述 (選用)

String 類型,說明輸出值。描述宣告值的長度必須是介於 0 與 1024 位元組之間的常值字串。您不能使用參數或函數來指定描述。

值 (必要)

aws cloudformation describe-stacks 命令所傳回的屬性值。輸出值可以包含常值、參數參考、虛擬參數、映射值或內部函數。

匯出 (選用)

要針對跨堆疊參考匯出的資源輸出名稱。

注意

下列限制適用於跨堆疊參考:

  • 每 AWS 帳戶個Export名稱在「區域」中必須是唯一的。

  • 您無法跨區域建立跨堆疊參考。您可以使用內部函數 Fn::ImportValue,僅匯入已在同一區域內匯出的值。

  • 對於輸出,ExportName 屬性值無法使用依賴某個資源的 Ref 或者 GetAtt 函數。

    同樣,ImportValue 函數不能包含依賴某個資源的 RefGetAtt 函數。

  • 如果另一堆疊參考其中一個輸出,則無法刪除堆疊。

  • 您無法修改或移除其他堆疊所參考的輸出值。

您可以使用內部函數來自訂匯出的 Name 值。下一節中有示例。

若要建立條件與輸出的關聯,請在範本的 Conditions 區段中定義條件。

範例

下列範例說明堆疊輸出的運作方式。

堆疊輸出

在下列範例中,只有在 BackupLoadBalancerDNSName 條件為 true 時,名為 BackupLoadBalancer 的輸出才會傳回邏輯 ID 為 CreateProdResources 之資源的 DNS 名稱 (第二個輸出顯示如何指定多個輸出)。

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::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 ] ]