

Dies ist das neue *CloudFormation Template Reference Guide*. Bitte aktualisieren Sie Ihre Lesezeichen und Links. Hilfe zu den ersten CloudFormation Schritten finden Sie im [AWS CloudFormation Benutzerhandbuch](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# `Lüfter:: GetStackOutput`
<a name="intrinsic-function-reference-getstackoutput"></a>

Die intrinsische Funktion `Fn::GetStackOutput` gibt den Wert einer Ausgabe aus einem anderen Stapel zurück. Im Gegensatz dazu erfordert diese Funktion nicht`Fn::ImportValue`, dass der Stack, auf den verwiesen wird, den Ausgabewert explizit exportiert. Sie unterstützt auch konto- und regionsübergreifende Verweise.

Verwenden Sie diese Funktion, wenn Sie stapelübergreifende Ausgaben für AWS Konten oder Regionen referenzieren müssen oder wenn Sie auf Ausgaben verweisen möchten, ohne explizite Exporte zu verwalten.

**Anmerkung**  
`Fn::GetStackOutput`erzeugt eine schwache Referenz. Der Wert, auf den verwiesen wird, wird bei der Erstellung oder Aktualisierung des Stacks aufgelöst. Wenn der Stack oder die Ausgabe, auf die verwiesen wird, später gelöscht oder geändert wird, wird der verbrauchende Stack nicht automatisch aktualisiert oder benachrichtigt. Um die Konsistenz zu gewährleisten, sollten Sie die referenzierten Stacks und Ausgaben vor unbeabsichtigten Änderungen schützen.

**Anmerkung**  
`Fn::GetStackOutput`unterstützt keine partitionsübergreifenden Verweise.

## Deklaration
<a name="w2aac24c43c11"></a>

### JSON
<a name="intrinsic-function-reference-getstackoutput-syntax.json"></a>

```
{
  "Fn::GetStackOutput": {
    "StackName": "{{stack-name}}",
    "OutputName": "{{output-name}}",
    "Region": "{{region}}",
    "RoleArn": "{{role-arn}}"
  }
}
```

### YAML
<a name="intrinsic-function-reference-getstackoutput-syntax.yaml"></a>

Sie können den vollständigen Funktionsnamen verwenden:

```
Fn::GetStackOutput:
  StackName: {{stack-name}}
  OutputName: {{output-name}}
  Region: {{region}}
  RoleArn: {{role-arn}}
```

Alternativ können Sie auch die Kurzform verwenden:

```
!GetStackOutput
  StackName: {{stack-name}}
  OutputName: {{output-name}}
  Region: {{region}}
  RoleArn: {{role-arn}}
```

**Wichtig**  
Sie können die Kurzform von nicht verwenden`!GetStackOutput`, wenn sie andere Kurzformfunktionen wie `!Sub` oder `!Ref` als Parameterwerte enthält. Verwenden Sie in diesem Fall den vollständigen Funktionsnamen:  

```
# Do not use
!GetStackOutput
  StackName: !Ref MyStackNameParam
  OutputName: VpcId

# Use this instead
Fn::GetStackOutput:
  StackName: !Ref MyStackNameParam
  OutputName: VpcId
```

## Parameters
<a name="w2aac24c43c13"></a>

StackName  
Der Name des Stacks, der die Ausgabe enthält, auf die Sie verweisen möchten.  
*Erforderlich*: Ja

OutputName  
Die logische ID der Ausgabe, auf die verwiesen werden soll. Dies ist der Schlüssel, der im Abschnitt Outputs der Vorlage des Stacks, auf den verwiesen wird, definiert ist.  
*Erforderlich*: Ja

Region  
Die AWS Region, in der der referenzierte Stack bereitgestellt wird. Standardmäßig wird die Region des Stacks verwendet, der erstellt oder aktualisiert wird.  
*Required*: No

RoleArn  
Der ARN einer IAM-Rolle mit `cloudformation:DescribeStacks` Berechtigungen für den referenzierten Stack. Diese Rolle muss durch die Ausführungsrolle des Stacks, der erstellt oder aktualisiert wird, übernommen werden. Standardmäßig wird die Ausführungsrolle des aktuellen Stacks verwendet. Verwenden Sie diesen Parameter, wenn Sie auf einen Stack in einem anderen AWS Konto verweisen.  
*Required*: No

## Rückgabewert
<a name="w2aac24c43c15"></a>

Der Wert der angegebenen Ausgabe aus dem referenzierten Stack.

## Beispiele
<a name="w2aac24c43c17"></a>

### Derselbe Account, gleiche Region
<a name="intrinsic-function-reference-getstackoutput-example-same-account-region"></a>

Das folgende Beispiel verweist auf die `VpcId` Ausgabe eines Stacks, der nach demselben Konto und derselben Region benannt `ProducerStack` ist. Da kein `Region` oder angegeben `RoleArn` ist, werden die Region und die Ausführungsrolle des aktuellen Stacks CloudFormation verwendet.

#### JSON
<a name="intrinsic-function-reference-getstackoutput-example-same.json"></a>

```
{
  "Fn::GetStackOutput": {
    "StackName": "ProducerStack",
    "OutputName": "VpcId"
  }
}
```

#### YAML
<a name="intrinsic-function-reference-getstackoutput-example-same.yaml"></a>

```
Fn::GetStackOutput:
  StackName: ProducerStack
  OutputName: VpcId
```

### Gleiches Konto, andere Region
<a name="intrinsic-function-reference-getstackoutput-example-cross-region"></a>

Das folgende Beispiel bezieht sich auf die `VpcId` Ausgabe von `ProducerStack` Deployed in`us-west-2`, während sich der verbrauchende Stack in einer anderen Region befindet. Der `Region` Parameter weist CloudFormation an, den referenzierten Wert in nachzuschlagen`us-west-2`.

#### JSON
<a name="intrinsic-function-reference-getstackoutput-example-cross-region.json"></a>

```
{
  "Fn::GetStackOutput": {
    "StackName": "ProducerStack",
    "OutputName": "VpcId",
    "Region": "us-west-2"
  }
}
```

#### YAML
<a name="intrinsic-function-reference-getstackoutput-example-cross-region.yaml"></a>

```
Fn::GetStackOutput:
  StackName: ProducerStack
  OutputName: VpcId
  Region: us-west-2
```

### Cross-account
<a name="intrinsic-function-reference-getstackoutput-example-cross-account"></a>

Das folgende Beispiel verweist auf die `VpcId` Ausgabe von `ProducerStack` in account`111111111111`. Der verbrauchende Stapel befindet sich im Konto`222222222222`. Das `RoleArn` gibt eine Rolle im Konto `111111111111` mit `cloudformation:DescribeStacks` Berechtigungen an, die von der Ausführungsrolle des verbrauchenden Stacks übernommen werden müssen.

#### JSON
<a name="intrinsic-function-reference-getstackoutput-example-cross-account.json"></a>

```
{
  "Fn::GetStackOutput": {
    "StackName": "ProducerStack",
    "OutputName": "VpcId",
    "RoleArn": "arn:aws:iam::111111111111:role/GetStackOutputRole"
  }
}
```

#### YAML
<a name="intrinsic-function-reference-getstackoutput-example-cross-account.yaml"></a>

```
Fn::GetStackOutput:
  StackName: ProducerStack
  OutputName: VpcId
  RoleArn: arn:aws:iam::111111111111:role/GetStackOutputRole
```

### Cross-account und regionsübergreifend
<a name="intrinsic-function-reference-getstackoutput-example-cross-account-region"></a>

Das folgende Beispiel verweist auf eine Ausgabe eines Stacks in einem anderen Konto und einer anderen Region. Sowohl die als `RoleArn` auch die `Region` Parameter sind angegeben.

#### JSON
<a name="intrinsic-function-reference-getstackoutput-example-cross-account-region.json"></a>

```
{
  "Fn::GetStackOutput": {
    "StackName": "ProducerStack",
    "OutputName": "VpcId",
    "RoleArn": "arn:aws:iam::111111111111:role/GetStackOutputRole",
    "Region": "us-west-2"
  }
}
```

#### YAML
<a name="intrinsic-function-reference-getstackoutput-example-cross-account-region.yaml"></a>

```
Fn::GetStackOutput:
  StackName: ProducerStack
  OutputName: VpcId
  RoleArn: arn:aws:iam::111111111111:role/GetStackOutputRole
  Region: us-west-2
```

## IAM-Rollenkonfiguration
<a name="intrinsic-function-reference-getstackoutput-iam"></a>

Wenn Sie den `RoleArn` Parameter für kontoübergreifende Verweise verwenden, muss die IAM-Rolle berechtigt sein, Stacks in dem Konto zu beschreiben, das den Stack enthält, auf den verwiesen wird:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudformation:DescribeStacks"
      ],
      "Resource": "*"
    }
  ]
}
```

**Tipp**  
Für eine restriktivere Richtlinie beschränken Sie `Resource` sich auf den spezifischen Stack-ARN, auf den Sie verweisen möchten.

Die Rolle muss über eine Vertrauensrichtlinie verfügen, die der Ausführungsrolle des Stacks, der den Stack nutzt, `AssumeRole` Berechtigungen gewährt:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:role/CloudFormationExecutionRole"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

## Unterstützte Funktionen
<a name="w2aac24c43c21"></a>

Die folgenden Funktionen können innerhalb der Parameterwerte von verwendet werden `Fn::GetStackOutput` (z. B. um das `StackName` Oder zu konstruieren`RoleArn`). Der Wert dieser Funktionen darf nicht von einer Ressource abhängen.
+ `Fn::Base64`
+ `Fn::FindInMap`
+ `Fn::If`
+ `Fn::Join`
+ `Fn::Select`
+ `Fn::Sub`
+ `Ref`

`Fn::GetStackOutput`selbst kann an den folgenden Template-Positionen verwendet werden:
+ Direkter Eigenschaftswert der Ressource
+ Drinnen `Fn::Join`
+ Drinnen `Fn::If`
+ Drinnen `Fn::Select`

[Bekannte Beschränkungen](#intrinsic-function-reference-getstackoutput-limitations)Unten finden Sie Positionen, die noch nicht unterstützt werden.

Sie können beispielsweise verwenden, `Ref` um einen Parameterwert als Stacknamen zu übergeben:

```
Parameters:
  SourceStackName:
    Type: String

Resources:
  MyResource:
    Type: AWS::EC2::Instance
    Properties:
      SubnetId:
        Fn::GetStackOutput:
          StackName: !Ref SourceStackName
          OutputName: SubnetId
```

## Bekannte Beschränkungen
<a name="intrinsic-function-reference-getstackoutput-limitations"></a>

Die folgenden Verwendungsmuster werden in dieser Version nicht unterstützt. Alle geben einen `InternalFailure` Fehler zurück. Die Support für diese Muster wird in einem future Update hinzugefügt.
+ `Fn::GetStackOutput`innerhalb eines `Fn::Sub` variablen Kartenwerts
+ `Fn::GetStackOutput`im Inneren `Fn::Base64`
+ `Fn::GetStackOutput`als direkter `Outputs` Abschnittswert
+ `Fn::GetStackOutput`innerhalb `Fn::Equals` des `Conditions` Abschnitts
+ `Fn::GetStackOutput`innen `Fn::ImportValue`

Verwenden Sie ihn `Fn::GetStackOutput` direkt als Eigenschaftswert einer Ressource oder fügen Sie ihn in `Fn::Join``Fn::If`, oder ein`Fn::Select`.

## Fehlerbehandlung
<a name="intrinsic-function-reference-getstackoutput-errors"></a>

CloudFormation validiert `Fn::GetStackOutput` Verweise bei der Erstellung oder Aktualisierung von Stacks. Im Folgenden sind die häufigsten Fehler aufgeführt, auf die Sie möglicherweise stoßen können:
+ *Die IAM-Rolle kann nicht übernommen werden* — der Stack-Vorgang schlägt mit der Fehlermeldung „Zugriff verweigert“ fehl. Stellen Sie sicher, dass die Rolle von der Ausführungsrolle des Stacks, der den Stack nutzt, übernommen werden kann.
+ Der *IAM-Rolle fehlt die DescribeStacks Berechtigung* — Der Stack-Vorgang schlägt mit der Fehlermeldung „Zugriff verweigert“ fehl. Stellen Sie sicher, dass die Berechtigungsrichtlinie der Rolle Folgendes umfasst: `cloudformation:DescribeStacks`
+ *Der referenzierte Stack ist nicht vorhanden* — Der Stack-Vorgang schlägt fehl und es wird ein Validierungsfehler angezeigt, der darauf hinweist, dass der Stack nicht gefunden wurde. Wenn Sie den `Region` Parameter angegeben haben, überprüfen Sie, ob dies die richtige Region für den Stack ist, auf den Sie verweisen möchten.
+ Der *Ausgabeschlüssel ist auf dem Stack, auf den verwiesen wird, nicht vorhanden*. Der Stack-Vorgang schlägt fehl und es wird ein Validierungsfehler angezeigt, der angibt, dass die Ausgabe nicht gefunden wurde.
+ *Der referenzierte Stack befindet sich in einer Region, die für das Zielkonto nicht aktiviert ist — der* Stack-Vorgang schlägt fehl. Stellen Sie sicher, dass die Zielregion in dem Konto aktiviert ist, dem der referenzierte Stack gehört.
+ Die *referenzierte Region ist ungültig* — Der Stack-Vorgang schlägt mit einem Validierungsfehler fehl.

### Verweise zwischen US-East-1- und Opt-In-Regionen
<a name="intrinsic-function-reference-getstackoutput-errors-optin"></a>

Bei der Implementierung eines Verweises zwischen der `us-east-1` Region und einer Opt-in-Region kann ein Fehler auftreten. Um solche Fehler zu vermeiden, folgen Sie [dieser Anleitung zur Aktualisierung der Token-Kompatibilität für den globalen STS-Endpunkt](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html).

## Verwenden von Fn:: GetStackOutput mit AWS Cloud Development Kit (AWS CDK)
<a name="intrinsic-function-reference-getstackoutput-cdk"></a>

Das AWS Cloud Development Kit (AWS CDK) (CDK) unterstützt `Fn::GetStackOutput` durch die `Fn.getStackOutput()` Methode. Wenn Sie über regionsübergreifende oder kontenübergreifende Verweise zwischen CDK-Stacks verfügen, kann das CDK diese nun `Fn::GetStackOutput` nativ verwenden, anstatt benutzerdefinierte Ressourcen mit SSM-Parametern zu generieren. Dies vereinfacht die synthetisierten Vorlagen und macht die vorherige Problemumgehung überflüssig. `crossRegionReferences`

Weitere Informationen finden Sie in der [CDK-API-Referenz](https://docs.aws.amazon.com/cdk/api/v2/).

## Vergleich mit Fn: ImportValue
<a name="intrinsic-function-reference-getstackoutput-comparison"></a>


| Funktion | `Fn::ImportValue` | `Fn::GetStackOutput` | 
| --- | --- | --- | 
| Gleiches Konto, gleiche Region | Unterstützt | Unterstützt | 
| Cross-account | Nicht unterstützt | Unterstützt | 
| Cross-Region | Nicht unterstützt | Unterstützt | 
| Erfordert einen expliziten Export | Ja | Nein | 
| Art des Verweises | Stark (blockiert das Löschen des Exportstapels) | Schwach (bei der Bereitstellung behoben) | 
| Referentielle Integrität | Ja | Nein | 

Verwenden Sie diese `Fn::ImportValue` Option, wenn Sie eine starke referenzielle Integrität innerhalb desselben Kontos und derselben Region benötigen. Verwenden Sie diese Option`Fn::GetStackOutput`, wenn Sie konto- oder regionsübergreifende Referenzen benötigen oder wenn Sie die Verwaltung expliziter Exporte vermeiden möchten.

## Best Practices
<a name="intrinsic-function-reference-getstackoutput-best-practices"></a>
+ *Schützt Stapel und Ausgaben, auf die verwiesen wird.* Da eine schwache Referenz `Fn::GetStackOutput` erzeugt wird, verhindert das Löschen des Stacks, auf den verwiesen wird, nicht, dass der Stack, der ihn beansprucht, erstellt oder aktualisiert wird. Nachfolgende Operationen, die die Referenz erneut auflösen, schlagen jedoch fehl. Verwenden Sie Stack-Richtlinien, Löschschutz oder IAM-Richtlinien, um ein versehentliches Löschen von Stacks zu verhindern, auf die verwiesen wird.
+ *Geben Sie IAM-Rollen eng ein.* Wenn Sie den `RoleArn` für den kontoübergreifenden Zugriff konfigurieren, beschränken Sie die `DescribeStacks` Berechtigung nach Möglichkeit auf den spezifischen Stack-ARN.
+ *Achten Sie auf den Zeitpunkt der Problemlösung.* Der Wert, auf den verwiesen wird, wird bei der Erstellung oder Aktualisierung des Stacks aufgelöst. Wenn sich der Quellwert ändert, wird der verbrauchende Stack nicht automatisch aktualisiert. Um die Änderungen zu übernehmen, führen Sie eine Aktualisierung des Stacks durch, der die Daten konsumiert.