

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.

# `Fn::Sub`
<a name="intrinsic-function-reference-sub"></a>

Mit der intrinsischen Funktion`Fn::Sub` können Sie Variablen in einer Eingabezeichenfolge mit Werten ersetzen, die Sie angeben. In Ihren Vorlagen können Sie diese Funktion verwenden, um Befehle oder Ausgaben mit Werten zu erstellen, die erst verfügbar sind, wenn Sie einen Stack erstellen oder aktualisieren.

## Deklaration
<a name="intrinsic-function-reference-sub-declaration"></a>

In den folgenden Abschnitten wird die Syntax der Funktion erläutert.

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

```
{ "Fn::Sub" : [ String, { Var1Name: Var1Value, Var2Name: Var2Value } ] }
```

Wenn Sie im Parameter nur Vorlagenparameter, ressourcenlogische IDs Attribute oder Ressourcenattribute ersetzen, geben Sie keine Variablenzuordnung an. `String`

```
{ "Fn::Sub" : String }
```

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

Syntax für den vollständigen Funktionsnamen:

```
Fn::Sub:
  - String
  - Var1Name: Var1Value
    Var2Name: Var2Value
```

Syntax für die Kurzform:

```
!Sub
  - String
  - Var1Name: Var1Value
    Var2Name: Var2Value
```

Wenn Sie im Parameter nur Vorlagenparameter, ressourcenlogische Attribute oder Ressourcenattribute ersetzen IDs, geben Sie keine `String` Variablenzuordnung an.

Syntax für den vollständigen Funktionsnamen:

```
Fn::Sub: String
```

Syntax für die Kurzform:

```
!Sub String
```

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

`String`  
Eine Zeichenfolge mit Variablen, die zur Laufzeit durch ihre zugehörigen Werte CloudFormation ersetzt werden. Schreibt Variablen als `${MyVarName}`. Bei Variablen kann es sich um Namen von Vorlagenparametern, um logische Ressourcen IDs, Ressourcenattribute oder um eine Variable in einer Key-Value-Map handeln. Wenn Sie nur Vorlagenparameternamen, logische Ressourcenattribute und Ressourcenattribute angeben IDs, geben Sie keine Schlüssel-Wert-Zuordnung an.  
Wenn Sie Vorlagenparameternamen oder ressourcenlogische Parameter angeben IDs, werden dieselben Werte CloudFormation zurückgegeben`${InstanceTypeParameter}`, als ob Sie die `Ref` systeminterne Funktion verwenden würden. Wenn Sie Ressourcenattribute angeben, z. B. werden dieselben Werte CloudFormation zurückgegeben`${MyInstance.PublicIp}`, als ob Sie die `Fn::GetAtt` systeminterne Funktion verwendet hätten.  
Um ein Dollarzeichen und geschweifte Klammern (`${}`) wörtlich zu schreiben, fügen Sie nach der geöffneten geschweiften Klammer ein Ausrufezeichen (`!`) hinzu, z. B. `${!Literal}` CloudFormation `${Literal}`löst diesen Text auf als.  
Wenn Sie eine Startvorlage verwenden, fügen Sie einen Backslash `\` vor dem Dollarzeichen ein, beispielsweise `\${!Literal}`, da das Literal sonst als leere Zeichenkette aufgelöst wird.

`VarName`  
Der Name einer Variablen, die Sie im Parameter `String` eingefügt haben.

`VarValue`  
Der Wert, der zur CloudFormation Laufzeit den zugehörigen Variablennamen ersetzt.

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

CloudFormation gibt die ursprüngliche Zeichenfolge zurück und ersetzt alle Variablen durch die Werte.

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

Das folgende Beispiele zeigt, wie die `Fn::Sub`-Funktion verwendet wird.

### Verwenden Sie `Fn::Sub` ohne eine Schlüssel-Wert-Map
<a name="w2aac24c66c11b5"></a>

In diesem einfachen Beispiel wird die Beschreibung der Ressource `InstanceSecurityGroup` dynamisch mit dem Pseudoparameter `AWS::StackName` erstellt. Wenn der Stapelname beispielsweise "VPC-EC2-ALB-Stack" lautet, ist die resultierende Beschreibung "SSH security group for VPC-EC2-ALB-Stack".

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

```
"InstanceSecurityGroup" : {
    "Type" : "AWS::EC2::SecurityGroup",
    "Properties" : {
        "GroupDescription" : {"Fn::Sub": "SSH security group for ${AWS::StackName}"}
}}
```

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

```
InstanceSecurityGroup:
  Type: AWS::EC2::SecurityGroup
  Properties:
    GroupDescription: !Sub "SSH security group for ${AWS::StackName}"
```

### Verwenden Sie `Fn::Sub` mit einer Schlüssel-Wert-Map
<a name="w2aac24c66c11b7"></a>

In diesem Beispiel wird der Name der Ressource `WWWBucket` dynamisch mit einer Key-Value-Map erstellt. Die Funktion `Fn::Sub` ersetzt `${Domain}` in der Eingabezeichenfolge `www.${Domain}` durch den Wert einer Funktion `Ref`, die auf den Parameter `RootDomainName` verweist, der in derselben Stackvorlage definiert ist. Wenn der Stammdomainnname beispielsweise "mydomain.com" lautet, ist der resultierende Name für diese Ressource "www.mydomain.com".

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

```
"WWWBucket":{
  "Type":"AWS::S3::Bucket",
  "Properties":{
    "BucketName":{
      "Fn::Sub":[
        "www.${Domain}",
        {
          "Domain":{
            "Ref":"RootDomainName"
          }
        }
      ]
    }
  }
}
```

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

```
  WWWBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub
        - 'www.${Domain}'
        - Domain: !Ref RootDomainName
```

### Verwenden Sie mehrere Variablen zum Konstruieren ARNs
<a name="w2aac24c66c11b9"></a>

Das folgende Beispiel verwendet `Fn::Sub` mit den Pseudo-Parametern `AWS::Region` und `AWS::AccountId` und der logischen Ressourcen-ID `vpc`, um einen Amazon Resource Name (ARN) für eine VPC zu erstellen.

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

```
{ "Fn::Sub": "arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc/${vpc}" }
```

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

```
!Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:vpc/${vpc}'
```

### Parameterwerte in Skripten für Benutzerdaten übergeben
<a name="w2aac24c66c11c11"></a>

In dem folgenden Beispiel werden die Pseudoparameter `Fn::Sub` und `AWS::StackName` mit `AWS::Region` zur Laufzeit mit dem tatsächlichen Stack-Namen und der Region ersetzt.

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

Zur besseren Lesbarkeit werden die einzelnen Befehle im JSON-Beispiel mit der `Fn::Join`-Funktion voneinander getrennt, sodass nicht das gesamte Benutzerdaten-Skript in einem einzelnen Zeichenfolgewert angegeben ist.

```
"UserData": { "Fn::Base64": { "Fn::Join": ["\n", [
  "#!/bin/bash -xe",
  "yum update -y aws-cfn-bootstrap",
  { "Fn::Sub": "/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region}" },
  { "Fn::Sub": "/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerGroup --region ${AWS::Region}" }]]
}}
```

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

Im YAML-Beispiel wird ein Literal-Block verwendet, um ein Benutzerdaten-Skript anzugeben.

```
UserData:
  Fn::Base64:
    !Sub |
      #!/bin/bash -xe
      yum update -y aws-cfn-bootstrap
      /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region}
      /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerGroup --region ${AWS::Region}
```

### Bedingte Werte mit Hilfe von Mappings spezifizieren
<a name="w2aac24c66c11c13"></a>

In diesem Beispiel wird der Name der Ressource `myLogGroup` dynamisch erstellt, indem die Variable `log_group_name` durch den Ergebniswert der Funktion `Fn::FindInMap` ersetzt wird.

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

```
{
  "Mappings": {
    "LogGroupMapping": {
      "Test": {
        "Name": "test_log_group"
      },
      "Prod": {
        "Name": "prod_log_group"
      }
    }
  },
  "Resources": {
    "myLogGroup": {
      "Type": "AWS::Logs::LogGroup",
      "Properties": {
        "LogGroupName": {
          "Fn::Sub": [
            "cloud_watch_${log_group_name}",
            {
              "log_group_name": {
                "Fn::FindInMap": [
                  "LogGroupMapping",
                  "Test",
                  "Name"
                ]
              }
            }
          ]
        }
      }
    }
  }
}
```

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

```
Mappings:
  LogGroupMapping:
    Test:
      Name: test_log_group
    Prod:
      Name: prod_log_group
Resources:
  myLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: !Sub 
        - 'cloud_watch_${log_group_name}'
        - log_group_name: !FindInMap 
            - LogGroupMapping
            - Test
            - Name
```

## Unterstützte Funktionen
<a name="intrinsic-function-reference-sub-supported-functions"></a>

Für den `String`-Parameter können Sie nicht jede beliebige Funktion verwenden. Sie müssen einen Zeichenfolgenwert angeben.

Für die Parameter `VarName` und `VarValue` stehen Ihnen die folgenden Funktionen zur Verfügung:
+ [`Fn::Base64`](intrinsic-function-reference-base64.md)
+ [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md)
+ [`Fn::GetAtt`](intrinsic-function-reference-getatt.md)
+ [`Fn::GetAZs`](intrinsic-function-reference-getavailabilityzones.md)
+ [`Fn::If`](intrinsic-function-reference-conditions.md#intrinsic-function-reference-conditions-if)
+ [`Fn::ImportValue`](intrinsic-function-reference-importvalue.md)
+ [`Fn::Join`](intrinsic-function-reference-join.md)
+ [`Fn::Select`](intrinsic-function-reference-select.md)
+ [`Fn::Sub`](#intrinsic-function-reference-sub)
+ [`Ref`](intrinsic-function-reference-ref.md)