

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.

# Erstellen Sie wiederverwendbare Ressourcenkonfigurationen, die in allen Vorlagen mit CloudFormation Modulen enthalten sein können
<a name="modules"></a>

*Module* sind eine Möglichkeit für Sie, Ressourcenkonfigurationen für die Aufnahme in Stack-Vorlagen auf transparente, verwaltbare und wiederholbare Weise zu erstellen. Module können gängige Servicekonfigurationen und Best Practices als modulare, anpassbare Bausteine zusammenfassen, die Sie in Ihre Stack-Vorlagen aufnehmen können. Module ermöglichen es Ihnen, Ressourcenkonfigurationen, die Best Practices, Fachwissen und akzeptierte Richtlinien (für Bereiche wie Sicherheit, Compliance, Governance und Branchenvorschriften) in Ihre Vorlagen einbeziehen, ohne fundierte Kenntnisse über die Feinheiten der Ressourcenimplementierung erwerben zu müssen.

Ein Netzwerkexperte könnte beispielsweise ein Modul erstellen, das integrierte Sicherheitsgruppen und ingress/egress Regeln enthält, die den Sicherheitsrichtlinien entsprechen. Sie könnten dieses Modul dann in Ihre Vorlage aufnehmen, um eine sichere Netzwerkinfrastruktur in Ihrem Stack bereitzustellen, ohne Zeit damit verbringen zu müssen, herauszufinden VPCs, wie Subnetze, Sicherheitsgruppen und Gateways funktionieren. Und da Module versioniert sind, kann der Modulautor eine neue Version des Moduls erstellen, wenn sich die Sicherheitsrichtlinien im Laufe der Zeit ändern, die diese Änderungen enthält.

Zu den Merkmalen der Verwendung von Modulen in Ihren Vorlagen gehören:
+ **Vorhersehbarkeit** — Ein Modul muss sich an das Schema halten, das es in der CloudFormation Registrierung registriert, sodass Sie wissen, in welche Ressourcen es aufgelöst werden kann, wenn Sie es in Ihre Vorlage aufnehmen.
+ **Wiederverwendbarkeit**- Sie können dasselbe Modul für mehrere Vorlagen und Konten verwenden.
+ **Rückverfolgbarkeit** — CloudFormation Behält das Wissen darüber bei, welche Ressourcen in einem Stack von einem Modul bereitgestellt wurden, sodass Sie die Quelle der Ressourcenänderungen leicht nachvollziehen können.
+ **Verwaltbarkeit** — Sobald Sie ein Modul registriert haben, können Sie es über die CloudFormation Registrierung verwalten, einschließlich Versionierung, Konto- und regionaler Verfügbarkeit.

Ein Modul kann enthalten:
+ Eine oder mehrere Ressourcen, die aus dem Modul bereitgestellt werden sollen, zusammen mit allen zugehörigen Daten wie Ausgaben oder Bedingungen.
+ Alle Modulparameter, mit denen Sie bei jeder Verwendung des Moduls benutzerdefinierte Werte angeben können.

Informationen zur Entwicklung von Modulen finden Sie unter [Entwickeln von Modulen](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/modules.html) im *CloudFormation CLI-Benutzerhandbuch*.

**Topics**
+ [Überlegungen zur Verwendung von Modulen](#module-considerations)
+ [Verstehen der Modulversionierung](module-versioning.md)
+ [Verwenden Sie Module aus der CloudFormation privaten Registry](modules-using.md)
+ [Verwenden Sie Parameter, um Modulwerte anzugeben](module-using-params.md)
+ [Referenzmodulressourcen in CloudFormation Vorlagen](module-ref-resources.md)

## Überlegungen zur Verwendung von Modulen
<a name="module-considerations"></a>
+ Für die Nutzung von Modulen fallen keine zusätzlichen Kosten an. Sie zahlen nur für die Ressourcen, die diese Module in Ihren Stacks auflösen.
+ CloudFormation Kontingente, wie z. B. die maximal zulässige Anzahl von Ressourcen in einem Stapel oder die maximale Größe des Vorlagentexts, gelten für die verarbeitete Vorlage, unabhängig davon, ob die in dieser Vorlage enthaltenen Ressourcen aus Modulen stammen oder nicht. Weitere Informationen finden Sie unter [CloudFormation Kontingente verstehen](cloudformation-limits.md).
+ Tags, die Sie auf Stack-Ebene angeben, werden den einzelnen Ressourcen zugewiesen, die vom Modul abgeleitet werden.
+ Auf Modulebene angegebene Hilfsskripten werden bei der Verarbeitung der Vorlage nicht auf die einzelnen Ressourcen übertragen, die im Modul enthalten sind. CloudFormation 
+ Die im Modul angegebenen Ausgaben werden an Ausgaben auf Vorlagenebene weitergegeben.

  Jeder Ausgabe wird eine logische ID zugewiesen, die eine Verkettung des logischen Namens des Moduls und des Ausgabenamens ist, wie im Modul definiert. Weitere Informationen finden Sie unter [Holen Sie sich exportierte Ausgaben aus einem bereitgestellten CloudFormation Stack](using-cfn-stack-exports.md).
+ Die im Modul angegebenen Parameter werden nicht an Parameter auf Vorlagenebene weitergegeben.

  Sie können jedoch Parameter auf Vorlagenebene erstellen, die auf Parameter auf Modulebene verweisen. Weitere Informationen finden Sie unter [Verwenden Sie Parameter, um Modulwerte anzugeben](module-using-params.md).

# Verstehen der Modulversionierung
<a name="module-versioning"></a>

Die CloudFormation Registrierung dient als Repository, in dem Sie Module für die Verwendung in Ihrer Region registrieren AWS-Konto und verwalten können. Sie können Module aus verschiedenen Quellen, einschließlich Drittanbietern AWS, und Ihre eigenen benutzerdefinierten Erweiterungen innerhalb Ihres Kontos und Ihrer Region registrieren. Weitere Informationen finden Sie unter [Erweiterungen mit der CloudFormation Registry verwalten](registry.md).

Module können unterschiedliche Versionen haben, so dass Sie angeben können, welche Version eines Moduls Sie verwenden möchten. Diese Versionskontrolle ist besonders nützlich, wenn Sie ein Modul aktualisieren oder ändern müssen, ohne dass bestehende Stacks, die von diesem Modul abhängen, beschädigt werden.

Beachten Sie die folgenden Punkte, wenn Sie mehrere Versionen eines Moduls verwenden:
+  CloudFormation Verwendet bei Stack-Vorgängen die Version des Moduls, die derzeit als Standardversion in der Region AWS-Konto und der Region registriert ist, in der der Stack-Vorgang ausgeführt wird. Dies schließt Module ein, die in anderen Modulen verschachtelt sind.

  Beachten Sie daher, dass die Verwendung derselben Vorlage zu unterschiedlichen Ergebnissen führen kann, wenn Sie verschiedene Versionen desselben Moduls als Standardversion in verschiedenen Konten oder Regionen registriert haben.
+  CloudFormation Verwendet bei Stack-Operationen die Version der Ressource, die derzeit als Standardversion in der Region AWS-Konto und registriert ist, in der der Stack-Vorgang ausgeführt wird. Dies schließt die Ressourcen ein, die durch das Einschließen von Modulen generiert wurden.
+ Durch das Ändern der Standardversion eines Moduls wird kein Stack-Aktualisierungsvorgang ausgelöst. Wenn Sie jedoch das nächste Mal eine Stack-Operation mit einer beliebigen Vorlage ausführen, die dieses Modul enthält, z. B. ein Stack-Update, CloudFormation wird die neue Standardversion für den Vorgang verwendet.

  Die einzige Ausnahme besteht darin, ein Stack-Update mit der Option **Vorherige Vorlagenoption verwenden** durchzuführen, wie unten beschrieben.
+ Wenn Sie bei Stack-Aktualisierungsvorgängen die Option „**Vorherige Vorlage verwenden**“ angeben, wird die zuvor verarbeitete Vorlage für das Stack-Update CloudFormation verwendet und das Modul nicht erneut verarbeitet, wenn Sie Änderungen daran vorgenommen haben.
+ Um einheitliche Ergebnisse zu gewährleisten, sollten Sie, wenn Sie Module in eine Stack-Vorlage zur Verwendung mit Stack-Sets aufnehmen, sicherstellen, dass in allen Konten und Regionen, in denen Sie Ihre Stack-Instances einsetzen wollen, dieselbe Version des Moduls als Standardversion eingestellt ist. Dies gilt auch für Module, die in anderen Modulen verschachtelt sind. Weitere Informationen finden Sie unter [Verwaltung von Stacks über Konten und Regionen hinweg mit StackSets](what-is-cfnstacksets.md).

## Voraussetzungen für die Aktivierung der öffentlichen Module von Drittanbietern
<a name="requirements-for-modules"></a>

Um ein öffentliches Modul eines Drittanbieters in Ihrem Konto und Ihrer Region erfolgreich zu aktivieren, muss für jede öffentliche Erweiterung (Ressource oder Modul) eines Drittanbieters, die in dem Modul enthalten ist, Folgendes zutreffen:
+ **Aktivierung der Erweiterung**- Die Erweiterung muss in dem Konto und der Region aktiviert sein, in der Sie sie verwenden möchten. Weitere Informationen finden Sie unter [Verwenden Sie öffentliche Erweiterungen von Drittanbietern aus der CloudFormation Registrierung](registry-public.md).
+ **Alias-Registrierung**- Wenn die Erweiterung im Modul einen Typnamen-Alias verwendet, muss die Erweiterung in Ihrem Konto und in der Region mit demselben Typnamen-Alias registriert werden. Weitere Informationen finden Sie unter [Verwenden Sie Aliase, um auf Erweiterungen zu verweisen](registry-public.md#registry-public-enable-alias).
+ **Versionskompatibilität**- Die derzeit aktivierte Version der Erweiterung muss eine der unterstützten Hauptversionen dieser Erweiterung sein, die im Modul angegeben sind.

Wenn Sie nicht die richtigen öffentlichen Erweiterungen und Erweiterungsversionen von Drittanbietern aktiviert haben, schlägt der Vorgang fehl und es CloudFormation wird eine Fehlermeldung angezeigt, in der die Erweiterungen und Versionen aufgeführt werden, die aktiviert werden müssen, bevor das Modul erfolgreich aktiviert werden kann.

# Verwenden Sie Module aus der CloudFormation privaten Registry
<a name="modules-using"></a>

In diesem Thema wird erklärt, wie Module in CloudFormation Vorlagen verwendet werden. Betrachten Sie Module als vorgefertigte Bündel von Ressourcen, die Sie zu Ihren Vorlagen hinzufügen können.

Um ein Modul zu verwenden, gehen Sie wie folgt vor:
+ **Modul registrieren** — Sie registrieren Module in der CloudFormation Registrierung als private Erweiterungen. Vergewissern Sie sich, dass es in der AWS-Konto und der Region, in der Sie arbeiten, registriert ist. Weitere Informationen finden Sie unter [CloudFormation Konzepte der Registrierung](registry-concepts.md).
+ **Fügen Sie es in Ihre Vorlage** ein — Fügen Sie das Modul dem [Resources](resources-section-structure.md) Abschnitt Ihrer CloudFormation Vorlage hinzu, genau wie Sie es mit anderen Ressourcen tun würden. Sie müssen auch alle erforderlichen Eigenschaften für das Modul angeben.
+ **Den Stack erstellen oder aktualisieren** — Wenn Sie einen Stack-Vorgang starten, CloudFormation wird eine verarbeitete Vorlage generiert, die alle enthaltenen Module in die entsprechenden Ressourcen auflöst. 
+ **Vorschau der Änderungen**- Bevor Sie Änderungen vornehmen, können Sie mit einem Änderungssatz sehen, welche Ressourcen hinzugefügt oder geändert werden. Weitere Informationen finden Sie unter [CloudFormation Stapel mithilfe von Änderungssätzen aktualisieren](using-cfn-updating-stacks-changesets.md).

Betrachten Sie das folgende Beispiel: Sie haben eine Vorlage, die sowohl Ressourcen als auch Module enthält. Die Vorlage enthält eine einzelne Ressource,,`ResourceA` sowie ein Modul, `ModuleParent`. Dieses Modul enthält zwei Ressourcen, `ResourceB` und,`ResourceC` sowie ein verschachteltes Modul, `ModuleChild`. `ModuleChild` enthält eine einzelne Ressource, `ResourceD`. Wenn Sie aus dieser Vorlage einen Stack erstellen, wird die Vorlage CloudFormation verarbeitet und die Module in die entsprechenden Ressourcen aufgelöst. Der resultierende Stack hat vier Ressourcen:,`ResourceA`,`ResourceB` `ResourceC`und `ResourceD`.

![\[CloudFormation Löst während eines Stack-Vorgangs die beiden in der Stack-Vorlage enthaltenen Module in die entsprechenden vier Ressourcen auf.\]](http://docs.aws.amazon.com/de_de/AWSCloudFormation/latest/UserGuide/images/modules-resource-inclusion.png)


CloudFormation verfolgt, welche Ressourcen in einem Stapel aus Modulen erstellt wurden. Sie können diese Informationen auf den Registerkarten **Ereignisse**, **Ressourcen** und **Abweichungen** für einen bestimmten Stack anzeigen und sie sind auch in der Änderungssatzvorschau enthalten.

Module sind von Ressourcen in einer Vorlage unterscheidbar, da sie der folgenden vierteiligen Namenskonvention entsprechen, im Gegensatz zu der typischen dreiteiligen Konvention, die von Ressourcen verwendet wird:

```
organization::service::use-case::MODULE
```

# Verwenden Sie Parameter, um Modulwerte anzugeben
<a name="module-using-params"></a>

In können Sie Vorlagenparameter verwenden CloudFormation, um Ihre Stacks anzupassen, indem Sie bei der Erstellung oder Aktualisierung des Stacks Eingabewerte angeben. Mit diesen Parametern können Sie bestimmte Aspekte des Stacks nach Ihren Bedürfnissen ändern. Weitere Informationen zur Definition von Vorlagenparametern finden Sie unter [CloudFormation ParametersVorlagensyntax](parameters-section-structure.md).

In ähnlicher Weise können Module auch Parameter haben. Mit diesen Modulparametern können Sie benutzerdefinierte Werte aus der Vorlage (oder einem anderen Modul), die das Modul verwendet, in das Modul eingeben. Das Modul kann dann diese benutzerdefinierten Werte verwenden, um Eigenschaftswerte für die darin enthaltenen Ressourcen festzulegen.

Sie können auch Vorlagenparameter definieren, die Moduleigenschaften festlegen, so dass Sie Werte eingeben können, die zum Zeitpunkt des Stapelvorgangs an das Modul übergeben werden. 

Wenn ein Modul ein verschachteltes Modul enthält, das seine eigenen Modulparameter hat, können Sie entweder:
+ Werte für die Parameter des verschachtelten Moduls direkt im übergeordneten Modul angeben.
+ Entsprechende Modulparameter im übergeordneten Modul definieren, die es ermöglichen, die Parameter des verschachtelten Moduls durch die Vorlage (oder das Modul) festzulegen, in der das übergeordnete Modul enthalten ist.

## Verwenden von Vorlagenparametern zur Angabe von Modulparameterwerten
<a name="module-using-params-example-1"></a>

Das folgende Beispiel zeigt, wie Vorlagenparameter definiert werden, die Werte an ein Modul übergeben.

Diese Vorlage, die `My::S3::SampleBucket::MODULE` enthält, definiert einen Vorlagenparameter,,`BucketName` der es dem Benutzer ermöglicht, während des Stack-Vorgangs einen S3 Bucket-Namen anzugeben.

```
# Template containing My::S3::SampleBucket::MODULE
Parameters:
  BucketName:
    Description: Name for your sample bucket
    Type: String
Resources:
  MyBucket:
    Type: 'My::S3::SampleBucket::MODULE'
    Properties:
      BucketName: !Ref BucketName
```

## Festlegen von Eigenschaften für Ressourcen in einem untergeordneten Modul aus dem übergeordneten Modul
<a name="module-using-params-example-2"></a>

Das folgende Beispiel veranschaulicht, wie Parameterwerte in einem Modul angegeben werden, das in einem anderen Modul verschachtelt ist.

Dieses erste Modul, `My::S3::SampleBucketPrivate::MODULE`, ist das untergeordnete Modul. Es definiert zwei Parameter: `BucketName` und `AccessControl`. Die für diese Parameter angegebenen Werte werden verwendet, um die Eigenschaften `BucketName` und `AccessControl` der Ressource `AWS::S3::Bucket`, die das Modul enthält, anzugeben. Unten sehen Sie das Vorlagenfragment für `My::S3::SampleBucketPrivate::MODULE`.

```
# My::S3::SampleBucketPrivate::MODULE
AWSTemplateFormatVersion: 2010-09-09
Description: A sample S3 Bucket with Versioning and DeletionPolicy.
Parameters:
  BucketName:
    Description: Name for the bucket
    Type: String
  AccessControl:
    Description: AccessControl for the bucket
    Type: String
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Ref BucketName
      AccessControl: !Ref AccessControl
      DeletionPolicy: Retain
      VersioningConfiguration:
        Status: Enabled
```

Als Nächstes ist das vorherige Modul in ein übergeordnetes Modul, `My::S3::SampleBucket::MODULE`, verschachtelt. Das übergeordnete Modul, `My::S3::SampleBucket::MODULE`, legt die Parameter des untergeordneten Moduls auf folgende Weise fest:
+ Es setzt den Parameter `AccessControl` von `My::S3::SampleBucketPrivate::MODULE` auf `Private`.
+ Für `BucketName` definiert es einen Modulparameter, der es ermöglicht, den Bucket-Namen in der Vorlage (oder dem Modul) anzugeben, die/das `My::S3::SampleBucket::MODULE` enthält.

```
# My::S3::SampleBucket::MODULE
AWSTemplateFormatVersion: 2010-09-09
Description: A sample S3 Bucket. With Private AccessControl.
Parameters:
  BucketName:
    Description: Name for your sample bucket
    Type: String
Resources:
  MyBucket:
    Type: 'My::S3::SampleBucketPrivate::MODULE'
    Properties:
      BucketName: !Ref BucketName
      AccessControl: Private
```

## Angeben von Beschränkungen für Modulparameter
<a name="modules-using-parameters-constraints"></a>

Modulparameter unterstützen nicht die Durchsetzung von Beschränkungen. Um eine Einschränkungsprüfung für einen Modulparameter durchzuführen, erstellen Sie einen Vorlagenparameter mit den gewünschten Einschränkungen. Dann referenzieren Sie diesen Vorlagenparameter in Ihrem Modulparameter. Weitere Informationen zur Definition von Vorlagenparametern finden Sie unter [CloudFormation ParametersVorlagensyntax](parameters-section-structure.md).

# Referenzmodulressourcen in CloudFormation Vorlagen
<a name="module-ref-resources"></a>

In CloudFormation Vorlagen müssen Sie häufig Eigenschaften für eine Ressource festlegen, die auf dem Namen oder der Eigenschaft einer anderen Ressource basieren. Weitere Informationen finden Sie unter [Ressourcen referenzieren](resources-section-structure.md#using-cross-resource-references).

Um auf eine Ressource zu verweisen, die in einem Modul in Ihrer CloudFormation Vorlage enthalten ist, müssen Sie zwei logische Namen kombinieren:
+ Der logische Name, den Sie dem Modul selbst gegeben haben, als Sie es in Ihre Vorlage aufgenommen haben.
+ Der logische Name der spezifischen Ressource innerhalb dieses Moduls.

Sie können diese beiden logischen Namen mit oder ohne einen Punkt (.) zwischen ihnen kombinieren. Wenn der logische Name des Moduls beispielsweise `MyModule` und der logische Name der Ressource `MyBucket`lautet, können Sie sich auf diese Ressource entweder als `MyModule.MyBucket` oder `MyModuleMyBucket`beziehen.

Um die logischen Namen von Ressourcen innerhalb eines Moduls zu finden, können Sie das Schema des Moduls konsultieren, das in der CloudFormation Registrierung oder mithilfe der [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeType.html)Operation verfügbar ist. Das Schema listet alle Ressourcen und ihre logischen Namen auf, die Teil des Moduls sind.

Sobald Sie den vollständigen logischen Namen haben, können Sie CloudFormation Funktionen wie `GetAtt` und verwenden, `Ref` um auf Eigenschaftswerte von Modulressourcen zuzugreifen. 

Sie haben zum Beispiel ein Modul `My::S3::SampleBucket::MODULE`, das eine Ressource `AWS::S3::Bucket` mit dem logischen Namen `S3Bucket`enthält. Um mit der Funktion `Ref` auf den Namen dieses Buckets zu verweisen, kombinieren Sie den Namen des Moduls in Ihrer Vorlage (`MyBucket`) mit dem logischen Namen der Ressource im Modul (`S3Bucket`). Der vollständige logische Name lautet entweder `MyBucket.S3Bucket` oder `MyBucketS3Bucket`.

**-Beispielvorlage**  
Die folgende Beispielvorlage erstellt einen S3-Bucket unter Verwendung des Moduls `My::S3::SampleBucket::MODULE` . Außerdem wird eine Amazon SQS-Warteschlange erstellt und ihr Name mit dem Bucket-Namen aus dem Modul identisch gemacht. Außerdem gibt die Vorlage den Amazon Resource Name (ARN) des erstellten S3-Buckets aus.

```
# Template that uses My::S3::SampleBucket::MODULE
Parameters:
  BucketName:
    Description: Name for your sample bucket
    Type: String
Resources:
  MyBucket:
    Type: My::S3::SampleBucket::MODULE
    Properties:
      BucketName: !Ref BucketName
  exampleQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Ref MyBucket.S3Bucket
Outputs:
  BucketArn:
    Value: !GetAtt MyBucket.S3Bucket.Arn
```