AWS CloudFormation
Benutzerhandbuch (API-Version 2010-05-15)

Ausgaben

Im optionalen Abschnitt Outputs deklarieren Sie Ausgabewerte, die in andere Stacks importiert werden können (zur Erstellung Stack-übergreifender Referenzierungen), in Antworten zurückgegeben werden können (bei Aufrufen zur Beschreibung von Stacks) oder in der AWS CloudFormation-Konsole angezeigt werden können. Beispielsweise können Sie den Namen des S3-Buckets eines Stacks ausgeben lassen, um den Bucket einfacher zu finden.

Syntax

Der Abschnitt Outputs besteht aus dem Schlüsselnamen Outputs, gefolgt von einem Leerzeichen und einem einzigen Doppelpunkt. Sie können maximal 60 Ausgaben in einer Vorlage deklarieren.

Das folgende Beispiel veranschaulicht die Struktur des Abschnitts Outputs.

JSON

Schließen Sie alle Ausgabedeklarationen in Klammern ein. Trennen Sie bei mehreren Ausgaben die einzelnen Ausgaben jeweils durch ein Komma voneinander.

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

YAML

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

Ausgabefelder

Der Abschnitt Outputs kann die folgenden Felder enthalten:

Logical ID

Gibt den Bezeichner der aktuellen Ausgabe an. Die logische ID muss alphanumerisch (a-z, A-Z, 0-9) und innerhalb der Vorlage eindeutig sein.

Description (optional)

Gibt einen String-Typ an, der den Ausgabewert beschreibt. Der Wert für die Deklaration der Beschreibung muss eine Literalzeichenfolge mit einer Länge zwischen 0 und 1 024 Byte sein. Parameter oder Funktionen dürfen nicht zur Angabe der Beschreibung verwendet werden. Die Beschreibung darf maximal 4 000 Byte lang sein.

Value (erforderlich)

Gibt den Wert der Eigenschaft an, der vom Befehl aws cloudformation describe-stacks zurückgegeben wird. Der Wert einer Ausgabe darf Literale, Parameterreferenzen, Pseudoparameter, Zuweisungswerte und intrinsische Funktionen enthalten.

Export (optional)

Gibt den Namen der Ressourcenausgabe an, wie er für eine Stack-übergreifende Referenzierung exportiert werden soll.

Anmerkung

Die folgenden Einschränkungen gelten für Stack-übergreifende Referenzen:

  • Für jedes AWS-Konto müssen Export-Namen innerhalb einer Region eindeutig sein.

  • Sie können Stack-übergreifende Referenzen nicht über Regionen hinweg erstellen. Sie können die intrinsische Funktion Fn::ImportValue verwenden, um nur Werte zu importieren, die innerhalb derselben Region exportiert wurden.

  • Bei Ausgaben kann der Wert der Name-Eigenschaft eines Export keine Ref- oder GetAtt-Funktionen verwenden, die von einer Ressource abhängen.

    Ebenso darf die ImportValue-Funktion keine Ref- oder GetAtt-Funktionen enthalten, die von einer Ressource abhängen.

  • Sie können einen Stack nicht löschen, wenn ein anderer Stack auf einen seiner Ausgaben verweist.

  • Sie können einen Ausgabewert, auf den von einem anderen Stack verwiesen wird, nicht ändern oder entfernen.

Sie können den Name-Wert eines Exports mithilfe intrinsischer Funktionen individuell anpassen. In den folgenden Beispielen wird die Funktion Fn::Join verwendet.

JSON

"Export" : { "Name" : { "Fn::Join" : [ ":", [ { "Ref" : "AWS::StackName" }, "AccountVPC" ] ] } }

YAML

Export: Name: !Join [ ":", [ !Ref "AWS::StackName", AccountVPC ] ]

Wenn Sie eine Bedingung mit einer Ausgabe verknüpfen möchten, müssen Sie die Bedingung im Abschnitt Conditions der Vorlage definieren.

Beispiele

Die folgenden Beispiele veranschaulichen die Funktionsweise von Stack-Ausgaben.

Stack-Ausgabe

Im folgenden Beispiel gibt die Ausgabe BackupLoadBalancerDNSName den DNS-Namen der Ressource mit der logischen ID BackupLoadBalancer zurück, und zwar nur, wenn die Bedingung CreateProdResources als wahr identifiziert wird. (Die zweite Ausgabe demonstriert, wie Sie mehrere Ausgaben angeben können.)

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

Stack-übergreifende Ausgabe

In den folgenden Beispielen gibt die Ausgabe mit dem Namen StackVPC die ID einer VPC zurück. Anschließend exportiert sie den Wert für Stack-übergreifende Referenzierungen, wobei sie dem Stack-Namen den Namen VPCID anfügt.

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"

Auf dieser Seite: