

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.

# Referenz für Transformationen
<a name="transform-reference"></a>

Transformationen sind Makros, die von gehostet werden. CloudFormation Im Gegensatz zu benutzerdefinierten Makros benötigt eine Transformation keine speziellen Berechtigungen, um sie zu verwenden, da sie von CloudFormation gehostet wird. Transformationen können in Vorlagen in jedem Konto innerhalb von CloudFormation verwendet werden. Außerdem fallen bei der Verwendung von Transformationen keine Gebühren an. CloudFormation behandelt eine Transformation in Bezug auf Reihenfolge und Umfang der Auswertung genauso wie jedes andere Makro.

Weitere Informationen zur Funktionsweise von Makros finden Sie im *AWS CloudFormation Benutzerhandbuch* [unter Verwenden von CloudFormation Makros zur benutzerdefinierten Verarbeitung von Vorlagen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html).

Sie können die folgenden Transformationen in Ihren Vorlagen verwenden. CloudFormation 

**Topics**
+ [`AWS::CodeDeployBlueGreen`-Transformation](transform-aws-codedeploybluegreen.md)
+ [`AWS::Include`-Transformation](transform-aws-include.md)
+ [`AWS::LanguageExtensions`-Transformation](transform-aws-languageextensions.md)
+ [`AWS::SecretsManager`-Transformation](transform-aws-secretsmanager.md)
+ [`AWS::Serverless`-Transformation](transform-aws-serverless.md)
+ [`AWS::ServiceCatalog`-Transformation](transform-aws-servicecatalog.md)

# `AWS::CodeDeployBlueGreen`-Transformation
<a name="transform-aws-codedeploybluegreen"></a>

In diesem Thema wird beschrieben, wie Sie die `AWS::CodeDeployBlueGreen` Transformation verwenden, um blue/green ECS-Bereitstellungen CodeDeploy auf Ihrem Stack zu ermöglichen.

Weitere Informationen finden Sie CloudFormation im *AWS CloudFormation Benutzerhandbuch* unter [Durchführen von blue/green ECS-Bereitstellungen CodeDeploy mithilfe von](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)

## Usage
<a name="aws-codedeploybluegreen-usage"></a>

Um die `AWS::CodeDeployBlueGreen` Transformation verwenden zu können, müssen Sie sie auf der obersten Ebene Ihrer CloudFormation Vorlage deklarieren. Sie können `AWS::CodeDeployBlueGreen` nicht als Transformation verwenden, die in einem anderen Vorlagenabschnitt eingebettet ist.

Der Wert der Transformationsdeklaration muss eine Literalzeichenfolge sein. Parameter oder Funktionen dürfen nicht zur Angabe eines Transformationswerts verwendet werden.

### Syntax
<a name="aws-codedeploybluegreen-syntax"></a>

Verwenden Sie die folgende Syntax, um diese Transformation in Ihrer CloudFormation Vorlage zu deklarieren:

#### JSON
<a name="aws-codedeploybluegreen-syntax.json"></a>

```
{
  "Transform":[
    "AWS::CodeDeployBlueGreen"
  ],
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-codedeploybluegreen-syntax.yaml"></a>

```
Transform:
  - 'AWS::CodeDeployBlueGreen'
Resources:
  ...
```

Die Transformation `AWS::CodeDeployBlueGreen` ist eine eigenständige Deklaration ohne zusätzliche Parameter.

## Zugehörige Ressourcen
<a name="aws-codedeploybluegreen-related-resources"></a>

*Vollständige CloudFormation Vorlagenbeispiele, die Sie verwenden können, um Blue/Green-Bereitstellungen von ECS auf Ihrem Stack zu aktivieren, finden Sie im [Benutzerhandbuch unter Blue/Green-Bereitstellungsvorlage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green-template-example.html).AWS CloudFormation *

*Allgemeine Informationen zur Verwendung von Makros finden Sie im Benutzerhandbuch unter [Durchführen einer benutzerdefinierten Verarbeitung von CloudFormation Vorlagen mit Vorlagenmakros](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html).AWS CloudFormation *

# `AWS::Include`-Transformation
<a name="transform-aws-include"></a>

In diesem Thema wird beschrieben, wie Sie mithilfe der `AWS::Include` Transformation Standardinhalte in Ihre Vorlagen einfügen. CloudFormation 

Dabei `AWS::Include` handelt es sich um ein CloudFormation Makro, das, wenn es in Ihrer Stapelvorlage referenziert wird, den Inhalt der angegebenen Datei an der Position der Transformation in der Vorlage einfügt, wenn Sie einen Stapel mithilfe eines Änderungssatzes erstellen oder aktualisieren. Die `AWS::Include`-Funktion verhält sich ähnlich wie eine `include`-, `copy`- oder `import`-Anweisung in Programmiersprachen.

## Usage
<a name="aws-include-usage"></a>

Sie können die `AWS::Include` Transformation überall in der CloudFormation Vorlage verwenden, außer im Abschnitt mit den Vorlagenparametern oder in der Vorlagenversion. Sie können `AWS::Include` z. B. im Zuweisungsabschnitt verwenden.

### Syntax der obersten Ebene einer Vorlage
<a name="aws-include-syntax-top-level"></a>

Um diese Transformation auf der obersten Ebene Ihrer CloudFormation Vorlage, als `Transform` Abschnitt, zu deklarieren, verwenden Sie die folgende Syntax:

#### JSON
<a name="aws-include-syntax-top-level.json"></a>

```
{
  "Transform":{
    "Name":"AWS::Include",
    "Parameters":{
      "Location":"s3://amzn-s3-demo-bucket/MyFileName.json"
    }
  },
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-include-syntax-top-level.yaml"></a>

```
Transform:
  Name: AWS::Include
  Parameters:
    Location: 's3://amzn-s3-demo-bucket/MyFileName.yaml'
Resources:
  ...
```

### Syntax einer in einen Abschnitt einer Vorlage eingebetteten Transformation
<a name="aws-include-syntax-within-section"></a>

Um diese Transformation in einem Abschnitt Ihrer CloudFormation Vorlage zu deklarieren, verwenden Sie die `Fn::Transform` systeminterne Funktion und die folgende Syntax:

#### JSON
<a name="aws-include-syntax-within-section.json"></a>

```
{
  "Fn::Transform":{
    "Name":"AWS::Include",
    "Parameters":{
      "Location":"s3://amzn-s3-demo-bucket/MyFileName.json"
    }
  }
}
```

#### YAML
<a name="aws-include-syntax-within-section.yaml"></a>

```
Fn::Transform:
  Name: AWS::Include
  Parameters:
    Location: s3://amzn-s3-demo-bucket/MyFileName.yaml
```

Weitere Informationen finden Sie unter [`Fn::Transform`](intrinsic-function-reference-transform.md).

### Parameters
<a name="aws-include-parameters"></a>

`Location`

Der Standort ist ein Amazon S3-URI mit einem bestimmten Dateinamen in einem S3-Bucket. Beispiel, `s3://amzn-s3-demo-bucket/MyFile.yaml`.

## Überlegungen
<a name="aws-include-considerations"></a>

Bei der Verwendung von `AWS::Include` sind die folgenden Punkte zu beachten. Weitere Hinweise zur Verwendung von Makros finden Sie unter [Überlegungen zu Makros](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros-overview.html#template-macros-considerations) im *AWS CloudFormation -Benutzerhandbuch*.
+ Wir unterstützen derzeit Amazon S3-URI, aber kein anderes Amazon S3-Format (z. B. Amazon S3 ARN). Es muss ein Amazon S3 S3-Bucket sein, im Gegensatz zu so etwas wie einem GitHub Repository.
+ Jeder mit Zugriff auf die Amazon S3-URL kann das Codefragment in seine Vorlage einschließen.
+ Die Vorlagenausschnitte müssen gültiger JSON-Code sein.
+ Ihre Vorlagen-Snippets müssen gültige Schlüssel-Wert-Objekte sein, zum Beispiel `"KeyName": "keyValue"`.
+ Sie können `AWS::Include` nicht verwenden, um auf einen Vorlagenausschnitt zu verweisen, der ebenfalls `AWS::Include` verwendet.
+ Wenn Ihre Codeausschnitte geändert werden, übernimmt der Stack nicht automatisch diese Änderungen. Um diese Änderungen zu erhalten, müssen Sie den Stack mit den aktualisierten Codeausschnitten aktualisieren. Wenn Sie Ihren Stack aktualisieren, stellen Sie sicher, dass Ihre eingeschlossenen Codefragmente nicht ohne Ihr Wissen geändert wurden. Um dies vor der Aktualisierung des Stacks sicherzustellen, überprüfen Sie den Änderungssatz.
+ Beim Erstellen von Vorlagen und Codeausschnitten können Sie YAML- und JSON-Vorlagensprachen mischen.
+ Derzeit werden keine Kurznotationen für YAML-Ausschnitte unterstützt.
+ Sie können einen Amazon S3-URI für eine regionsübergreifende Replikation mit `AWS::Include` bereitstellen. Überprüfen Sie unbedingt die Amazon S3-Bucket-Namen, wenn Sie auf Objekte für regionsübergreifende Replikation zugreifen. Weitere Informationen finden Sie unter [Replizieren von Objekten innerhalb und zwischen Regionen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html) im *Amazon-S3-Benutzerhandbuch*.

## Beispiele
<a name="aws-include-examples"></a>

Die folgenden Beispiele zeigen, wie Sie die Transformation `AWS::Include` verwenden, um ein Wartebedingungs-Handle auszuführen. Ersetzen Sie *amzn-s3-demo-bucket* durch Ihren tatsächlichen Bucket-Namen. 

Speichern Sie zunächst eine YAML-Datei mit dem Namen `single_wait_condition.yaml` in Ihrem S3-Bucket mit dem folgenden Inhalt:

```
MyWaitCondition:
  Type: AWS::CloudFormation::WaitCondition
  Properties:
    Handle: !Ref MyWaitHandle
    Timeout: '4500'
```

Sie können diese Datei dann entweder im JSON- oder YAML-Format referenzieren.

### JSON
<a name="aws-include-example.json"></a>

```
{
   "Resources": {
      "MyWaitHandle": {
         "Type": "AWS::CloudFormation::WaitConditionHandle"
      },
      "Fn::Transform": {
         "Name": "AWS::Include",
         "Parameters": {
            "Location": "s3://amzn-s3-demo-bucket/single_wait_condition.yaml"
         }
      }
   }
}
```

### YAML
<a name="aws-include-example.yaml"></a>

```
Resources:
  MyWaitHandle:
    Type: AWS::CloudFormation::WaitConditionHandle
  Fn::Transform:
    Name: AWS::Include
    Parameters:
      Location: "s3://amzn-s3-demo-bucket/single_wait_condition.yaml"
```

Weitere Informationen finden Sie im *AWS CloudFormation Benutzerhandbuch* [unter Wartebedingungen in einer CloudFormation Vorlage erstellen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html).

# `AWS::LanguageExtensions`-Transformation
<a name="transform-aws-languageextensions"></a>

In diesem Thema wird beschrieben, wie Sie die Transformation `AWS::LanguageExtensions` verwenden, um zusätzliche Funktionen und Möglichkeiten zu aktivieren, die standardmäßig nicht verfügbar sind. 

Das `AWS::LanguageExtensions` ist ein CloudFormation Makro, das, wenn es in Ihrer Stack-Vorlage referenziert wird, jede intrinsische Funktion, die durch die Transformation definiert wurde, auf ihren aufgelösten Wert innerhalb der Vorlage aktualisiert, wenn Sie einen Stack mithilfe eines Änderungssatzes erstellen oder aktualisieren. 

Indem Sie diese Transformation in Ihre CloudFormation Vorlage aufnehmen, können Sie auf zusätzliche Funktionen zugreifen, z. B. auf Funktionen`Fn::ForEach`, die fortgeschrittenere Operationen wie Iterationen ermöglichen. Sie können intrinsische Funktionen auch an Stellen verwenden, an denen sie normalerweise nicht erlaubt sind, wie beispielsweise in den Funktionen `Ref` und `Fn::GetAtt` .

## Usage
<a name="aws-languageextensions-usage"></a>

Um die `AWS::LanguageExtensions` Transformation verwenden zu können, müssen Sie sie auf der obersten Ebene Ihrer CloudFormation Vorlage deklarieren. Sie können `AWS::LanguageExtensions` nicht als Transformation verwenden, die in einem anderen Vorlagenabschnitt eingebettet ist.

Die Deklaration muss die Zeichenkette `AWS::LanguageExtensions` als Wert verwenden. Parameter oder Funktionen dürfen nicht zur Angabe eines Transformationswerts verwendet werden.

### Syntax
<a name="aws-languageextensions-syntax"></a>

Verwenden Sie die folgende Syntax, um diese Transformation in Ihrer CloudFormation Vorlage zu deklarieren:

### JSON
<a name="aws-languageextensions-syntax.json"></a>

```
{
  "Transform":"AWS::LanguageExtensions",
  "Resources":{
    ...
  }
}
```

### YAML
<a name="aws-languageextensions-syntax.yaml"></a>

```
Transform: AWS::LanguageExtensions
Resources:
  ...
```

Die Transformation `AWS::LanguageExtensions` ist eine eigenständige Deklaration ohne zusätzliche Parameter.

## Unterstützung für zusätzliche Funktionen
<a name="aws-languageextensions-supported-functions"></a>

Die Transformation `AWS::LanguageExtensions` unterstützt die folgenden zusätzlichen Funktionen:
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)

## Überlegungen
<a name="aws-languageextensions-considerations"></a>

Bei der Verwendung der `AWS::LanguageExtensions`-Transformation ist Folgendes zu beachten:
+ Wenn Sie einen Stack aktualisieren, der die `AWS::LanguageExtensions` Transformation verwendet, empfehlen wir, die Option **Vorhandene Vorlage verwenden** in der CloudFormation Konsole oder die entsprechende Befehlszeilenoption nicht zu verwenden`--use-previous-template`. Die Transformation `AWS::LanguageExtensions` löst Parameter während der Verarbeitung in Literalwerte auf. Wenn Sie verwenden`--use-previous-template`, CloudFormation verwendet diese verarbeitete Vorlage mit den alten Literalwerten, wodurch verhindert wird, dass neue Parameterwerte und Systems Manager Manager-Parameteraktualisierungen angewendet werden. Geben Sie stattdessen die ursprüngliche Vorlage an, um sicherzustellen, dass die Parameter mit den aktuellen Werten neu aufgelöst werden.
+ Kurzform-YAML-Syntax wird in einer Vorlage für intrinsische Funktionen nicht unterstützt, die nur von der `AWS::LanguageExtensions`-Transformation bereitgestellt wird. Verwenden Sie explizite Verweise auf diese Funktionen. Verwenden Sie z. B. `Fn::Length` statt `!Length`.
+ Die AWS SAM CLI unterstützt derzeit nicht die `Fn::ForEach` intrinsische Funktion der `AWS::LanguageExtensions` Transformation.
+ Nutzen Sie ein Listenformat, wenn Sie mehrere Transformationen verwenden. Wenn Sie benutzerdefinierte Makros verwenden, platzieren Sie AWS bereitgestellte Transformationen hinter Ihren benutzerdefinierten Makros. Wenn Sie sowohl `AWS::LanguageExtensions`- als auch `AWS::Serverless`-Transformationen verwenden, muss die `AWS::LanguageExtensions`-Transformation in der Liste vor der `AWS::Serverless`-Transformation stehen.
+ Funktionen und Attribute, die von der Transformation `AWS::LanguageExtensions` bereitgestellt werden, werden nur in den Abschnitten,`Resources` `Conditions`und `Outputs` Ihrer Vorlage unterstützt.

## Beispiele
<a name="aws-languageextensions-examples"></a>

Die folgenden Beispiele zeigen, wie Sie die Transformation `AWS::LanguageExtensions` verwenden, um die durch die Transformation definierte intrinsische Funktion `Fn::Length` zu verwenden.

### JSON
<a name="aws-languageextensions-example.json"></a>

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Transform": "AWS::LanguageExtensions",
    "Parameters": {
        "QueueList": {
            "Type": "CommaDelimitedList"
        },
        "QueueNameParam": {
            "Description": "Name for your SQS queue",
            "Type": "String"
        }
    },
    "Resources": {
        "Queue": {
            "Type": "AWS::SQS::Queue",
            "Properties": {
                "QueueName": {
                    "Ref": "QueueNameParam"
                },
                "DelaySeconds": {
                    "Fn::Length": {
                        "Ref": "QueueList"
                    }
                }
            }
        }
    }
}
```

### YAML
<a name="aws-languageextensions-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::LanguageExtensions
Parameters:
  QueueList:
    Type: CommaDelimitedList
  QueueNameParam:
    Description: Name for your SQS queue
    Type: String
Resources:
  Queue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Ref QueueNameParam
      DelaySeconds:
        'Fn::Length': !Ref QueueList
```

## Zugehörige Ressourcen
<a name="aws-languageextensions-related-resources"></a>

Weitere Beispiele finden Sie in den folgenden Themen.
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)
+ [`Ref`](intrinsic-function-reference-ref.md)
+ [`Fn::GetAtt`](intrinsic-function-reference-getatt.md)
+ [`Fn::FindInMap enhancements`](intrinsic-function-reference-findinmap-enhancements.md)

*Allgemeine Informationen zur Verwendung von Makros finden Sie im Benutzerhandbuch unter [Durchführen einer benutzerdefinierten Verarbeitung von CloudFormation Vorlagen mit Vorlagenmakros](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html).AWS CloudFormation *

# `Fn::FindInMap enhancements`
<a name="intrinsic-function-reference-findinmap-enhancements"></a>

Die `AWS::LanguageExtensions` Transformation verbessert die Funktionalität der `Fn::FindInMap` intrinsischen Funktion in CloudFormation Vorlagen.

Die `Fn::FindInMap` Funktion wird verwendet, um einen Wert aus einem Mapping abzurufen, das im `Mappings` Abschnitt einer CloudFormation Vorlage definiert ist. Die Standardfunktion `Fn::FindInMap` hat jedoch einige Einschränkungen, wie beispielsweise die Unfähigkeit, mit fehlenden Zuordnungen umzugehen oder eine Funktion `Fn::FindInMap` zu verwenden, in die einige intrinsische Funktionen eingebettet sind.

Die `AWS::LanguageExtensions`-Transformation behebt diese Einschränkungen durch die Einführung der folgenden Verbesserungen:
+ **Standardwert Unterstützung**- Sie können einen Standardwert angeben, der zurückgegeben wird, wenn keine Zuordnung gefunden wird.
+ **Unterstützung für intrinsische Funktionen**- Sie können auch eine breitere Palette von intrinsischen Funktionen verwenden, um die Felder von `Fn::FindInMap` zu definieren als mit der Standardfunktion `Fn::FindInMap` .

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

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

```
{ "Fn::FindInMap" : [
    "MapName",
    "TopLevelKey",
    "SecondLevelKey",
    {"DefaultValue": "DefaultValue"}
  ]
}
```

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

Syntax für den vollständigen Funktionsnamen:

```
Fn::FindInMap:
  - MapName
  - TopLevelKey
  - SecondLevelKey
  - DefaultValue: DefaultValue
```

Syntax für die Kurzform:

```
!FindInMap
  - MapName
  - TopLevelKey
  - SecondLevelKey
  - DefaultValue: DefaultValue
```

## Parameters
<a name="intrinsic-function-reference-findinmap-enhancements-parameters"></a>

DefaultValue  <a name="DefaultValue"></a>
Der Wert, in den aufgelöst `Fn::FindInMap` wird, wenn er nicht in der `MapName` Map gefunden werden `TopLevelKey` and/or `SecondLevelKey` kann. Dies ist ein optionales Feld.

Alle Parameter `MapName`, `TopLevelKey`, `SecondLevelKey` und `DefaultValue` können eine intrinsische Funktion sein, sofern sie während der Transformation in einen gültigen Wert aufgelöst werden können.

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

Die folgenden Beispiele zeigen, wie Sie die Felder von `Fn::FindInMap` definieren, wenn Sie die Transformation `AWS::LanguageExtensions` hinzufügen.

### Einen Standardwert verwenden
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

Im Folgenden finden Sie ein Beispiel für die Verwendung eines Standardwerts in der Funktion `Fn::FindInMap` .

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

```
{
  //...
    "Transform": "AWS::LanguageExtensions",
    //...
    "Fn::FindInMap": [
      "RegionMap",
      { "Ref": "AWS::Region" },
      "InstanceType",
      { "DefaultValue": "t3.micro" }
    ]
  //...
}
```

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

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap 
        - 'RegionMap'
        - !Ref 'AWS::Region'
        - 'InstanceType'
        - DefaultValue: t3.micro
#...
```

#### Intrinsische Funktionen verwenden, um den Schlüssel der obersten Ebene zu definieren
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

Im Folgenden sehen Sie ein Beispiel für die Verwendung einer Funktion `Fn::FindInMap` mit den darin eingebetteten Funktionen `Fn::Select` und `Fn::Split`, um den Schlüssel der obersten Ebene zu definieren.

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

```
{
  //...
  "Transform": "AWS::LanguageExtensions",
  //...
      "Fn::FindInMap": [
        "MyMap",
        {
          "Fn::Select": [
            0,
            {
              "Fn::Split": [
                "|",
                { "Ref": "InputKeys" }
              ]
            }
          ]
        },
        "SecondKey"
      ]
//...
}
```

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

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap: [MyMap, !Select [0, !Split [|, !Ref InputKeys]], SecondKey]
#...
```

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

Sie können die folgenden Funktionen in den `Fn::FindInMap:`-Bedingungen verwenden:
+ ``Fn::FindInMap``
+ ``Fn::Join``
+ ``Fn::Sub``
+ ``Fn::If``
+ ``Fn::Select``
+ ``Fn::Length``
+ ``Fn::ToJsonString``
+ ``Fn::Split`` – Sofern es nicht für den Standardwert verwendet wird, muss `Fn::Split` in Verbindung mit intrinsischen Funktionen verwendet werden, die eine Zeichenfolge erzeugen, z. B. ``Fn::Join`` oder ``Fn::Select``.
+ ``Ref``

## Zugehörige Ressourcen
<a name="w2aac28c16c20c19"></a>

Weitere Informationen und Beispiele für die Verwendung der Funktion `Fn::FindInMap` finden Sie unter [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md).

Weitere Informationen zu diesen `AWS::LanguageExtensions`-Transformationen finden Sie unter [`AWS::LanguageExtensions`-Transformation](transform-aws-languageextensions.md).

# `AWS::SecretsManager`-Transformation
<a name="transform-aws-secretsmanager"></a>

In diesem Thema wird beschrieben, wie die `AWS::SecretsManager` Transformation und der [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)Ressourcentyp verwendet werden, um eine Lambda-Funktion für die Rotation von Geheimnissen anzugeben.

Die `AWS::SecretsManager` Transformation ist ein CloudFormation Makro, das, wenn es in Ihrer Stack-Vorlage referenziert wird, automatisch eine Lambda-Funktion für die Rotation von Geheimnissen generiert, wenn Sie einen Stack mithilfe eines Änderungssatzes erstellen oder aktualisieren. Die Lambda-Funktion wird in einem verschachtelten Stapel in der verarbeiteten Vorlage platziert. Es verwendet eine Funktionsvorlage aus dem [AWS Secrets Manager Rotation Lambda Functions-Repository](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas), die auf dem Wert der [RotationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-rotationtype)Eigenschaft der [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)Ressource basiert.

## Usage
<a name="aws-secretsmanager-usage"></a>

Um die `AWS::SecretsManager` Transformation verwenden zu können, müssen Sie sie auf der obersten Ebene Ihrer CloudFormation Vorlage deklarieren. Sie können `AWS::SecretsManager` nicht als Transformation verwenden, die in einem anderen Vorlagenabschnitt eingebettet ist.

Die Deklaration muss die Zeichenkette `AWS::SecretsManager-2020-07-23` oder `AWS::SecretsManager-2024-09-16` als Wert verwenden. Parameter oder Funktionen dürfen nicht zur Angabe eines Transformationswerts verwendet werden.

### Syntax
<a name="aws-secretsmanager-syntax"></a>

Verwenden Sie die folgende Syntax, um diese Transformation in Ihrer CloudFormation Vorlage zu deklarieren:

#### JSON
<a name="aws-secretsmanager-syntax.json"></a>

```
{
  "Transform":"AWS::SecretsManager-2020-07-23",
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-secretsmanager-syntax.yaml"></a>

```
Transform: AWS::SecretsManager-2020-07-23
Resources:
  ...
```

Die Transformation `AWS::SecretsManager` ist eine eigenständige Deklaration ohne zusätzliche Parameter. Stattdessen konfigurieren Sie die [HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html)Eigenschaft der [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)Ressource in Ihrer Stack-Vorlage. Die [HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html)Eigenschaft spezifiziert die Lambda-Funktion zur Durchführung der Geheimnisrotation.

## Neue Features in `AWS::SecretsManager-2024-09-16`
<a name="aws-secretsmanager-new-version"></a>

Die neueste Version der `AWS::SecretsManager`-Transformation (`AWS::SecretsManager-2024-09-16`) enthält die folgenden Verbesserungen:
+ **Automatische Lambda-Upgrades** — Wenn Sie Ihre CloudFormation Stacks aktualisieren, aktualisieren Ihre Lambda-Funktionen jetzt automatisch ihre Laufzeitkonfiguration und internen Abhängigkeiten. Dadurch wird sichergestellt, dass Sie die sichersten und zuverlässigsten Versionen des Codes verwenden, der die Rotation der Geheimnisse in Secrets Manager verwaltet.
+ **Unterstützung für zusätzliche Attribute**- Die neue Transformation unterstützt zusätzliche Ressourcenattribute für den Ressourcentyp `AWS::SecretsManager::RotationSchedule` bei Verwendung mit der Eigenschaft `HostedRotationLambda` einschließlich des Attributs `DependsOn` .
**Anmerkung**  
Beide Versionen unterstützen die Attribute `DeletionPolicy` und `UpdateReplacePolicy` .

Weitere Informationen zu dieser neuen Version der `AWS::SecretsManager` Transformation finden Sie unter [Einführung einer erweiterten Version der AWS Secrets Manager Transformation: AWS::SecretsManager-2024-09-16 im AWS Sicherheits-Blog](https://aws.amazon.com/blogs/security/introducing-an-enhanced-version-of-the-aws-secrets-manager-transform-awssecretsmanager-2024-09-16/).

## Beispiele
<a name="aws-secretsmanager-examples"></a>

Die folgenden Beispiele zeigen, wie Sie die `AWS::SecretsManager` Transformation (`AWS::SecretsManager-2024-09-16`) und die [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)Ressource in Ihrer Vorlage verwenden. In diesem Beispiel CloudFormation wird automatisch eine Lambda-Funktion für die geheime Rotation von MySQL-Einzelbenutzern generiert.

Das Geheimnis ist so eingestellt, dass es sich jeden Tag um Mitternacht (UTC) automatisch dreht. Der Rotationsprozess kann bis zu 2 Stunden dauern. Durch die Aktualisierung des Rotationsplans wird keine sofortige Rotation gestartet.

### JSON
<a name="aws-secretsmanager-example.json"></a>

```
{
  "AWSTemplateFormatVersion":"2010-09-09",
  "Transform":"AWS::SecretsManager-2024-09-16",
  "Resources":{

  ...

    "MySecretRotationSchedule":{
      "Type":"AWS::SecretsManager::RotationSchedule",
      "DependsOn":"logical name of AWS::SecretsManager::SecretTargetAttachment resource",
      "Properties":{
        "SecretId":{
          "Ref":"logical name of AWS::SecretsManager::Secret resource"
        },
        "HostedRotationLambda":{
          "RotationType":"MySQLSingleUser",
          "RotationLambdaName":"name of Lambda function to be created",
          "VpcSecurityGroupIds":{
            "Fn::GetAtt":[
              "logical name of AWS::EC2::SecurityGroup resource",
              "GroupId"
            ]
          },
          "VpcSubnetIds":{
            "Fn::Join":[
              ",",
              [
                {
                  "Ref":"logical name of primary subnet"
                },
                {
                  "Ref":"logical name of secondary subnet"
                }
              ]
            ]
          }
        },
        "RotationRules":{
          "ScheduleExpression":"cron(0 0 * * ? *)",
          "Duration":"2h"
        },
        "RotateImmediatelyOnUpdate":false
      }
    }
  }
}
```

### YAML
<a name="aws-secretsmanager-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::SecretsManager-2024-09-16
Resources:

  ...

  MySecretRotationSchedule:
    Type: AWS::SecretsManager::RotationSchedule
    DependsOn: logical name of AWS::SecretsManager::SecretTargetAttachment resource
    Properties:
      SecretId: !Ref logical name of AWS::SecretsManager::Secret resource
      HostedRotationLambda:
        RotationType: MySQLSingleUser
        RotationLambdaName: name of Lambda function to be created
        VpcSecurityGroupIds: !GetAtt logical name of AWS::EC2::SecurityGroup resource.GroupId
        VpcSubnetIds:
          Fn::Join:
          - ","
          - - Ref: logical name of primary subnet
            - Ref: logical name of secondary subnet
      RotationRules:
        ScheduleExpression: cron(0 0 * * ? *)
        Duration: 2h
      RotateImmediatelyOnUpdate: false
```

## Zugehörige Ressourcen
<a name="aws-secretsmanager-related-resources"></a>

Vollständige CloudFormation Vorlagenbeispiele, mit denen Sie geheime Rotationen einrichten können, finden Sie im Abschnitt [Beispiele](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html#aws-resource-secretsmanager-rotationschedule--examples) der `AWS::SecretsManager::RotationSchedule` Ressource.

*Allgemeine Informationen zur Verwendung von Makros finden Sie im Benutzerhandbuch unter [Durchführen einer benutzerdefinierten Verarbeitung von CloudFormation Vorlagen mit Vorlagenmakros](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html).AWS CloudFormation *

# `AWS::Serverless`-Transformation
<a name="transform-aws-serverless"></a>

In diesem Thema wird beschrieben, wie Sie die `AWS::Serverless` Transformation verwenden, um eine in der AWS SAM-Syntax ( AWS Serverless Application Model) geschriebene Vorlage zu verarbeiten und sie in eine konforme CloudFormation Vorlage umzuwandeln. 

Weitere Informationen zur Verwendung der `AWS::Serverless`-Transformation finden Sie unter [AWS SAM transform](https://github.com/aws/serverless-application-model) on GitHub.

## Usage
<a name="aws-serverless-usage"></a>

Um die `AWS::Serverless` Transformation verwenden zu können, müssen Sie sie auf der obersten Ebene Ihrer CloudFormation Vorlage deklarieren. Sie können `AWS::Serverless` nicht als Transformation verwenden, die in einem anderen Vorlagenabschnitt eingebettet ist.

Die Deklaration muss die Zeichenkette `AWS::Serverless-2016-10-31` als Wert verwenden. Parameter oder Funktionen dürfen nicht zur Angabe eines Transformationswerts verwendet werden.

### Syntax
<a name="aws-serverless-syntax"></a>

Verwenden Sie die folgende Syntax, um diese Transformation in Ihrer CloudFormation Vorlage zu deklarieren:

#### JSON
<a name="aws-serverless-syntax.json"></a>

```
{
  "Transform":"AWS::Serverless-2016-10-31",
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-serverless-syntax.yaml"></a>

```
Transform: AWS::Serverless-2016-10-31
Resources:
  ...
```

Die Transformation `AWS::Serverless` ist eine eigenständige Deklaration ohne zusätzliche Parameter.

## Beispiele
<a name="aws-serverless-examples"></a>

Die folgenden Beispiele zeigen, wie Sie die `AWS::Serverless`-Transformation und die AWS SAM -Syntax verwenden, um die Deklaration einer Lambda-Funktion und ihre Ausführungsrolle zu vereinfachen.

### JSON
<a name="aws-serverless-example.json"></a>

```
{
  "Transform":"AWS::Serverless-2016-10-31",
  "Resources":{
    "MyFunction":{
      "Type":"AWS::Serverless::Function",
      "Properties":{
        "Handler":"index.handler",
        "Runtime":"nodejs20.x",
        "CodeUri":"s3://amzn-s3-demo-bucket/MySourceCode.zip"
      }
    }
  }
}
```

### YAML
<a name="aws-serverless-example.yaml"></a>

```
Transform: AWS::Serverless-2016-10-31
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs20.x
      CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip'
```

Wenn Sie einen Änderungssatz anhand der Vorlage erstellen, CloudFormation wird die durch die Transformation definierte AWS SAM Syntax erweitert. Die verarbeitete Vorlage erweitert die Ressource `AWS::Serverless::Function` und deklariert eine Lambda-Funktion und eine Ausführungsrolle.

```
{
  "Resources": {
    "MyFunction": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Handler": "index.handler",
        "Code": {
          "S3Bucket": "amzn-s3-demo-bucket",
          "S3Key": "MySourceCode.zip"
        },
        "Role": {
          "Fn::GetAtt": ["MyFunctionRole", "Arn"]
        },
        "Runtime": "nodejs20.x"
      }
    },
    "MyFunctionRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"],
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [{
            "Action": ["sts:AssumeRole"],
            "Effect": "Allow",
            "Principal": {
              "Service": ["lambda.amazonaws.com"]
            }
          }]
        }
      }
    }
  }
}
```

## Verwenden von `AWS::Serverless` mit `AWS::LanguageExtensions`
<a name="aws-serverless-language-extensions"></a>

Wenn Sie die Transformationen `AWS::Serverless` und `AWS::LanguageExtensions` verwenden, erfordert die Referenzierung von Ressourcen wie `AWS::ApiGateway::Stage` eine spezielle Syntax, wenn der Stufenname als Nicht-`NoEcho`-Parameterwert übergeben wird.

Verwenden Sie diese Option, um die logische ID-Referenz `Fn::Sub` zu generieren, anstatt die AWS SAM Syntax für die Referenz (`MyApi.Stage`) zu verwenden. Beispiel, `"Ref": {"Fn::Sub": "${MyApi}${StageName}Stage"}`. Dadurch wird zur Laufzeit die richtige logische ID erstellt.

Der Grund für dieses spezielle Format ist, dass diese beiden Transformationen Werte unterschiedlich behandeln:
+ `AWS::LanguageExtensions` löst intrinsische Funktionen in ihre tatsächlichen Werte auf.
+ `AWS::Serverless`erzeugt unterschiedliche logische Werte, IDs je nachdem, ob sie einen statischen Wert oder eine systeminterne Funktion empfängt.

## Zugehörige Ressourcen
<a name="aws-serverless-related-resources"></a>

[Weitere Informationen zu serverlosen Anwendungen und dem AWS Serverless Application Model (AWS SAM) finden Sie im Entwicklerhandbuch.AWS Serverless Application Model](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)

Informationen zu den spezifischen Ressourcen- und Eigenschaftstypen finden Sie unter [AWS SAM Ressourcen und Eigenschaften](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-resources-and-properties.html) im *AWS Serverless Application Model Entwicklerhandbuch*. AWS SAM

Allgemeine Informationen zur Verwendung von Makros finden Sie im *AWS CloudFormation Benutzerhandbuch* unter [Durchführen einer benutzerdefinierten Verarbeitung von CloudFormation Vorlagen mit Vorlagenmakros](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html).

# `AWS::ServiceCatalog`-Transformation
<a name="transform-aws-servicecatalog"></a>

In diesem Thema wird beschrieben, wie Sie die `AWS::ServiceCatalog` Transformation verwenden, um auf Ausgaben eines vorhandenen AWS Service Catalog bereitgestellten Produkts in Ihrer CloudFormation Vorlage zu verweisen.

## Usage
<a name="aws-servicecatalog-usage"></a>

Um die `AWS::ServiceCatalog` Transformation verwenden zu können, müssen Sie sie auf der obersten Ebene Ihrer CloudFormation Vorlage deklarieren. Sie können `AWS::ServiceCatalog` nicht als Transformation verwenden, die in einem anderen Vorlagenabschnitt eingebettet ist.

Wenn ein Ausgabewert erforderlich ist, geben Sie den Namen des bereitgestellten Produkts und den Namen des Ausgabeschlüssels an.

Sie können in Ihrer Vorlage auf mehrere bereitgestellte Produkte und Schlüsselnamen verweisen, maximal 20 pro Vorlage. Während der Bereitstellung ruft die Transformation den Wert von jedem referenzierten bereitgestellten Produkt und Schlüssel ab und ersetzt den Ausgabewert in Ihrer CloudFormation -Vorlage.

Die Deklaration muss die Zeichenkette `AWS::ServiceCatalog` als Wert verwenden. Parameter oder Funktionen dürfen nicht zur Angabe eines Transformationswerts verwendet werden.

### Syntax
<a name="aws-servicecatalog-syntax"></a>

Verwenden Sie die folgende Syntax, um diese Transformation in Ihrer CloudFormation Vorlage zu deklarieren:

#### JSON
<a name="aws-servicecatalog-syntax.json"></a>

```
{
  "Transform":"AWS::ServiceCatalog",
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-servicecatalog-syntax.yaml"></a>

```
Transform: AWS::ServiceCatalog
Resources:
  ...
```

Die Transformation `AWS::ServiceCatalog` ist eine eigenständige Deklaration ohne zusätzliche Parameter.

## Beispiele
<a name="aws-servicecatalog-examples"></a>

Die folgenden Beispiele zeigen, wie Sie in einer CloudFormation Vorlage auf Ausgaben eines vorhandenen, von Service Catalog bereitgestellten Produkts verweisen können.

In diesen Beispielen ist `SampleProvisionedProduct` ein zuvor erstelltes Produkt. `SampleOutputKey` ist ein Ausgabeschlüssel dieses bereitgestellten Produkts.

### JSON
<a name="aws-servicecatalog-example.json.json"></a>

Dieses Beispiel ist eine Arbeitsversion.

Vorlagenversionen, die den Wert nicht als String-Literal umschließen, schlagen fehl.

```
{
  "AWSTemplateFormatVersion":"2010-09-09",
  "Transform":"AWS::ServiceCatalog",
  "Resources":{
    "ExampleParameter":{
      "Type":"AWS::SSM::Parameter",
      "Properties":{
        "Type":"String",
        "Value":"[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]"
      }
    }
  }
}
```

### YAML
<a name="aws-servicecatalog-example.yaml"></a>

Beispiele 1–4 sind gültige Vorlagen. In den Beispielen 1 und 2 sind Transformation und Wert String-Literale.

Beispiel 5 ist keine gültige Vorlage. Der Wert muss in einer Zeichenfolge `'` oder `"` oder `>-` umschlossen sein. Wenn nicht, erhält der Benutzer eine Fehlermeldung.

```
// Example 1 
AWSTemplateFormatVersion: 2010-09-09
Transform: 'AWS::ServiceCatalog'
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: '[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]'
     
// Example 2
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: '[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]'
     
     
// Example 3 
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: "[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]"
     
     
// Example 4 
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: >-
        [[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]
     
     
// Example 5 
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter2:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: [[servicecatalog:provisionedproduct:SSMProductProvisionedProduct:SampleOutputKey]]
```