

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.

# Leitfaden zur cFcT-Anpassung
<a name="cfct-customizations-dev-guide"></a>

 Der Leitfaden *Customizations for AWS Control Tower* (cFCT) richtet sich an Administratoren, DevOps Fachleute, unabhängige Softwareanbieter, IT-Infrastrukturarchitekten und Systemintegratoren, die ihre AWS Control Tower Tower-Umgebungen für ihr Unternehmen und ihre Kunden anpassen und erweitern möchten. Es enthält Informationen zur Anpassung und Erweiterung der AWS Control Tower Tower-Umgebung mit dem cFCT-Anpassungspaket. 

**Anmerkung**  
 Für die Bereitstellung und Konfiguration (cFcT) müssen Sie ein Konfigurationspaket bereitstellen und verarbeiten. AWS CodePipeline In den folgenden Abschnitten wird der Prozess detailliert beschrieben. 

# Überblick über die Code-Pipeline
<a name="cfct-codepipeline-overview"></a>

Das Konfigurationspaket erfordert Amazon Simple Storage Service (Amazon S3) und AWS CodePipeline. Das Konfigurationspaket enthält die folgenden Elemente:
+ Eine Manifest-Datei
+ Ein begleitender Satz von Vorlagen
+ Andere JSON-Dateien zur Beschreibung und Implementierung Ihrer AWS Control Tower Tower-Umgebungsanpassungen

Standardmäßig wird das `_custom-control-tower-configuration.zip` Konfigurationspaket in einen Amazon S3 S3-Bucket mit der folgenden Namenskonvention geladen:

`custom-control-tower-configuration-accountID-region`.

**Anmerkung**  
 Standardmäßig erstellt CfCT einen Amazon S3 S3-Bucket zum Speichern der Pipeline-Quelle. Die meisten Kunden bleiben bei dieser Standardeinstellung. Wenn Sie über ein vorhandenes AWS CodeCommit Repository verfügen, können Sie den Quellspeicherort in Ihr AWS CodeCommit Repository ändern. Weitere Informationen finden Sie [ CodePipelineim *AWS CodePipeline Benutzerhandbuch* unter Bearbeiten einer Pipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-edit.html).

Die *Manifestdatei* ist eine Textdatei, die die AWS Ressourcen beschreibt, die Sie einsetzen können, um Ihre landing zone anzupassen. CodePipeline erledigt diese Aufgaben: 
+ extrahiert die Manifest-Datei, den dazugehörigen Satz von Vorlagen und andere JSON-Dateien
+ führt Manifest- und Vorlagenvalidierungen durch
+ [ruft Abschnitte in der CFCT-Manifestdatei auf, um bestimmte Pipeline-Phasen auszuführen.](#code-pipeline-stages)

Wenn Sie das Konfigurationspaket aktualisieren, indem Sie die Manifestdatei anpassen und den Unterstrich (\$1) aus dem Dateinamen des Konfigurationspakets entfernen, wird es automatisch initiiert. AWS CodePipeline

**Merken Sie sich den Unterstrich**  
Der Dateiname des Beispielkonfigurationspakets beginnt mit einem Unterstrich (\$1), sodass dieser nicht automatisch AWS CodePipeline ausgelöst wird. Wenn Sie die Anpassung des Konfigurationspakets abgeschlossen haben, laden Sie die Datei `custom-control-tower-configuration.zip` ohne den Unterstrich (\$1) hoch, um die Bereitstellung in auszulösen. AWS CodePipeline

## AWS CodePipeline Stufen
<a name="code-pipeline-stages"></a>

Die CfCT-Pipeline erfordert mehrere AWS CodePipeline Phasen, um Ihre AWS Control Tower Tower-Umgebung zu implementieren und zu aktualisieren.

1. **Phase „Quelle“**

   Die Quellphase ist die Anfangsphase. Ihr benutzerdefiniertes Konfigurationspaket leitet diese Pipeline-Phase ein. Die Quelle für AWS CodePipeline kann entweder ein Amazon S3 S3-Bucket oder ein AWS CodeCommit Repository sein, in dem das Konfigurationspaket gehostet werden kann.

1. **Phase der Erstellung**

   In der Erstellungsphase AWS CodeBuild muss der Inhalt des Konfigurationspakets validiert werden. Diese Prüfungen umfassen das Testen der `manifest.yaml` Dateisyntax und des Schemas sowie aller CloudFormation Vorlagen, die im Paket enthalten sind oder remote gehostet werden, mithilfe von CloudFormation `validate-template` und`cfn_nag`. Wenn die Manifestdatei und die CloudFormation Vorlagen die Tests bestehen, fährt die Pipeline mit der nächsten Phase fort. Wenn die Tests fehlschlagen, können Sie die CodeBuild Protokolle überprüfen, um das Problem zu identifizieren, und die Konfigurationsquelldatei nach Bedarf bearbeiten.

1. **Phase der manuellen Genehmigung (optional)**

   Die Phase der manuellen Genehmigung ist optional. Wenn Sie diese Phase aktivieren, bietet sie zusätzliche Kontrolle über die Konfigurationspipeline. Die Pipeline wird während der Bereitstellung angehalten, bis eine Genehmigung erteilt wird. Sie können sich für die manuelle Genehmigung entscheiden, indem Sie den Parameter **Pipeline-Genehmigungsphase** auf **Ja** ändern, wenn Sie den Stack starten.

1. **Phase der Richtlinie**

   In der Richtlinienphase wird die Zustandsmaschine Service Control Policy (SCP) oder Resource Control Policy (RCP) aufgerufen AWS Organizations APIs , um Create oder aufzurufen. SCPs RCPs

1. **CloudFormation Ressourcenphase**

   In der CloudFormation Ressourcenphase wird die Stackset-Zustandsmaschine aufgerufen, um die Ressourcen bereitzustellen, die in der Liste der Konten oder Organisationseinheiten (OUs) angegeben sind, die Sie in der Manifestdatei angegeben haben. Die Zustandsmaschine erstellt die CloudFormation Ressourcen in der Reihenfolge, in der sie in der Manifestdatei angegeben sind. Um eine Ressourcenabhängigkeit anzugeben, ordnen Sie die Reihenfolge an, in der die Ressourcen in der Manifestdatei angegeben werden. Die Reihenfolge der Ressourcen innerhalb der Manifestdatei ist die einzige Möglichkeit, eine Abhängigkeit anzugeben.

# Definieren Sie eine benutzerdefinierte Konfiguration
<a name="cfct-custom-configuration"></a>

Sie definieren Ihre benutzerdefinierte AWS Control Tower Tower-Konfiguration mit der CFCT-Manifestdatei, den zugehörigen Vorlagen und anderen JSON-Dateien. Sie packen diese Dateien in eine Ordnerstruktur und platzieren sie als `.zip` Datei im Amazon S3 S3-Bucket, wie im folgenden Codebeispiel gezeigt.

**Ordnerstruktur mit benutzerdefinierter Konfiguration**

```
- manifest.yaml
- policies/                                                [optional]
   - service control policies files (*.json)
- templates/                                               [optional]
   - template files for AWS CloudFormation Resources (*.template)
```

Das vorherige Beispiel zeigt die Struktur eines benutzerdefinierten Konfigurationsordners. Die Ordnerstruktur bleibt gleich, unabhängig davon, ob Sie Amazon S3 oder ein AWS CodeCommit Repository als Quellspeicherort wählen. Wenn Sie Amazon S3 als Quellspeicher wählen, komprimieren Sie alle Ordner und Dateien in eine `custom-control-tower-configuration.zip` Datei und laden Sie nur die `.zip` Datei in den dafür vorgesehenen Amazon S3 S3-Bucket hoch.

**Anmerkung**  
Wenn Sie verwenden AWS CodeCommit, platzieren Sie die Dateien im Repository, ohne die Dateien zu komprimieren.

# Die CFCT-Manifestdatei
<a name="the-manifest-file"></a>

Die `manifest.yaml` CFCT-Datei ist eine Textdatei, die Ihre AWS Ressourcen beschreibt. Das folgende Beispiel zeigt die Struktur der CFCT-Manifestdatei.

```
---
region: String
version: 2021-03-15

resources:
  #set of CloudFormation resources, SCP policies, or RCP policies
...
```

Wie im vorherigen Codebeispiel gezeigt, geben die ersten beiden Zeilen der Manifestdatei die Werte der Schlüsselwörter **region** und **version** an. Hier sind die Definitionen dieser Schlüsselwörter.

**region** — Eine Textzeichenfolge für die AWS Control Tower Tower-Standardregion. Dieser Wert muss ein gültiger AWS Regionsname sein (z. B. `us-east-1``eu-west-1`, oder`ap-southeast-1`). Die AWS Control Tower Tower-Heimatregion ist die Standardeinstellung, wenn Sie benutzerdefinierte AWS Control Tower Tower-Ressourcen (z. B. CloudFormation StackSets) erstellen, sofern keine ressourcenspezifischere Region angegeben ist.

```
region:your-home-region
```

**Version** — Die Versionsnummer des Manifestschemas. Die letzte unterstützte Version ist 2021-03-15.

```
version: 2021-03-15
```

**Anmerkung**  
Wir empfehlen Ihnen dringend, die neueste Version zu verwenden. Informationen zum Aktualisieren der Manifesteigenschaften in der neuesten Version finden Sie unter[Versionsupgrades für das cFCT-Manifest](cfct-compatibility.md).

Das nächste Schlüsselwort, das im vorherigen Beispiel gezeigt wurde, ist das Schlüsselwort **resources**. Der **Ressourcenbereich** der Manifestdatei ist stark strukturiert. Er enthält eine detaillierte Liste von AWS Ressourcen, die automatisch von der CfCT-Pipeline bereitgestellt werden. Diese Beschreibungen der Ressourcen und ihrer verfügbaren Parameter finden Sie im nächsten Abschnitt.

# Der Abschnitt „Ressourcen“ der CFCT-Manifestdatei
<a name="cfct-manifest-file-resources-section"></a>

 In diesem Thema wird der Abschnitt **Ressourcen** der CFCT-Manifestdatei beschrieben, in dem Sie die Ressourcen definieren, die für Ihre Anpassungen erforderlich sind. Dieser Abschnitt der CFCT-Manifestdatei beginnt mit dem Schlüsselwort **resources** und setzt sich bis zum Ende der Datei fort. 

 Der Abschnitt **Resources** der Manifestdatei spezifiziert die Optionen oder AWS Organizations SCPs und und CloudFormation StackSets RCPs, die CfcT automatisch über die Code-Pipeline bereitstellt. Sie können Konten und Regionen auflisten OUs, um Stack-Instances bereitzustellen. 

 Stack-Instances werden auf Kontoebene statt auf OU-Ebene bereitgestellt. SCPs und RCPs werden auf OU-Ebene bereitgestellt. Weitere Informationen finden Sie unter [Erstellen eigener Anpassungen](https://docs.aws.amazon.com/controltower/latest/userguide/cfcn-byo-customizations.html). 

 In der folgenden Beispielvorlage werden die möglichen Einträge beschrieben, die für den **Ressourcenbereich** der Manifestdatei verfügbar sind. 

```
resources: # List of resources
  - name: [String]
    resource_file: [String] [Local File Path, S3 URI, S3 URL] 
    deployment_targets: # account and/or organizational unit names
      accounts: # array of strings, [0-9]{12}
        - 012345678912
        - AccountName1
      organizational_units: #array of strings
        - OuName1
        - OuName2 
    deploy_method: scp | stack_set | rcp
    parameters: # List of parameters [SSM, Alfred, Values]
      - parameter_key: [String]
        parameter_value: [String]  
    export_outputs: # list of ssm parameters to store output values
      - name: /org/member/test-ssm/app-id
        value: $[output_ApplicationId]    
    regions: #list of strings
    - [String]
```

**Der Rest dieses Themas enthält detaillierte Definitionen für die Schlüsselwörter, die im vorherigen Codebeispiel gezeigt wurden.**

**Name** — Der Name, der mit dem verknüpft ist CloudFormation StackSets. Die von Ihnen angegebene Zeichenfolge weist einem Stack-Set einen benutzerfreundlicheren Namen zu.
+  **Typ:** Zeichenfolge
+ **Erforderlich**: Ja
+ **Gültige Werte:** a-z, A-Z, 0-9 und ein Bindestrich (-). Der Name muss mit einem alphabetischen Zeichen beginnen.

**Beschreibung** — Die Beschreibung der Ressource.
+ **Typ:** Zeichenfolge
+ **Required**: No

 **resource\$1file** — Diese Datei kann als relativer Speicherort zur Manifestdatei, als Amazon S3 S3-URI oder URL angegeben werden, die auf eine CloudFormation Vorlage oder eine AWS Organizations Dienststeuerungsrichtlinie in JSON zum Erstellen von CloudFormation Ressourcen verweist, SCPs oder. RCPs 
+ **Typ:** Zeichenfolge
+ **Erforderlich**: Ja 

1. Das folgende Beispiel zeigt, dass`resource_file`, angegeben als relativer Speicherort zur Ressourcendatei im Konfigurationspaket.

   ```
   resources:
     - name: SecurityRoles
       resource_file: templates/custom-security.template
   ```

1. Das folgende Beispiel zeigt die als Amazon S3 S3-URI angegebene Ressourcendatei. 

   ```
   resources:
     - name: SecurityRoles
       resource_file: s3://amzn-s3-demo-bucket/[key-name]
   ```

1. Das folgende Beispiel zeigt die Ressourcendatei, die als Amazon S3 S3-HTTPS-URL angegeben ist. 

   ```
   resources:
     - name: SecurityRoles
       resource_file: https://bucket-name.s3.Region.amazonaws.com/key-name
   ```
**Anmerkung**  
Wenn Sie eine Amazon S3 S3-URL angeben, stellen Sie sicher, dass die Bucket-Richtlinie Lesezugriff für das AWS Control Tower Tower-Verwaltungskonto zulässt, von dem aus Sie CfCT bereitstellen. Wenn Sie eine Amazon S3 S3-HTTPS-URL angeben, stellen Sie sicher, dass der Pfad die Punktnotation verwendet. Beispiel, `S3.us-west-1`. CfCT unterstützt keine Endpunkte, die einen Bindestrich zwischen S3 und der Region enthalten, wie z. B. `S3‐us-west-2`

1. Das folgende Beispiel zeigt eine Amazon S3 S3-Bucket-Richtlinie und einen ARN, in dem Ressourcen gespeichert werden.

   ```
   {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
           "Effect": "Allow",
           "Principal": {"AWS": "arn:aws:iam::AccountId:root"},
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::my-bucket/*”
          }
      ]
   }  
   ```

   Sie ersetzen die im Beispiel gezeigte *AccountId* Variable durch die AWS Konto-ID für das Verwaltungskonto, das CfCT einsetzt. Weitere Beispiele finden Sie unter [Beispiele für Bucket-Richtlinien](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-bucket-policies.html) im Amazon Simple Storage Service-Benutzerhandbuch.

**parameters** — Gibt den Namen und den Wert für CloudFormation Parameter an.
+ **Type** MapList:
+ **Required**: No

Der Parameterbereich enthält key/value Parameterpaare. Die folgende Pseudovorlage beschreibt den Abschnitt mit den **Parametern**.

```
parameters:
  - parameter_key: [String]
    parameter_value: [String]
```
+ **parameter\$1key** — Der dem Parameter zugeordnete Schlüssel.
  +  **Typ:** Zeichenfolge
  + **Erforderlich:** Ja (unter der Eigenschaft parameters)
  + **Gültige Werte:** a-z, A-Z und 0-9 
+ **parameter\$1value — Der** dem Parameter zugeordnete Eingabewert.
  + **Typ:** Zeichenfolge 
  +  **Erforderlich:** Ja (unter der Parameter-Eigenschaft) 

**deploy\$1method** — Die Bereitstellungsmethode für die Bereitstellung von Ressourcen im Konto. Derzeit unterstützt **deploy\$1method** die Bereitstellung von Ressourcen mithilfe der `stack_set` Option für die Ressourcenbereitstellung durch CloudFormation StackSets, der `scp` Option, wenn Sie sie bereitstellen SCPs, oder der `rcp` Option, wenn Sie sie bereitstellen. RCPs
+ **Typ:** Zeichenfolge 
+ **Zulässige Werte**: `stack_set` \$1 `scp` \$1 `rcp`
+ **Erforderlich**: Ja

**deployment\$1targets** ****— Liste der Konten oder Organisationseinheiten (OUs), in denen CfCT die CloudFormation Ressourcen bereitstellen wird, die als Konten oder Organisationseinheiten angegeben sind.****

**Anmerkung**  
 Wenn Sie ein SCP oder RCP bereitstellen möchten, muss es sich bei dem Ziel um eine Organisationseinheit und nicht um ein Konto handeln. 
+ **Typ:** Zeichenkettenliste `account name` oder `account number` um anzugeben, dass diese Ressource in der angegebenen Kontoliste bereitgestellt wird, oder `OU names` um anzugeben, dass diese Ressource in der angegebenen OU-Liste bereitgestellt wird.
+ **Erforderlich:** Mindestens eines der **Konten** oder **Organizational\$1Units**
  + **Konten:**

    **Typ:** Zeichenkettenliste `account name` oder `account number` um anzugeben, dass diese Ressource in der angegebenen Kontoliste bereitgestellt wird.
  + **organisational\$1units:**

    **Typ:** Zeichenkettenliste`OU names`, die angibt, dass diese Ressource in einer bestimmten OU-Liste bereitgestellt wird. Wenn Sie eine Organisationseinheit angeben, die keine Konten enthält, und die **Accounts-Eigenschaft** nicht hinzugefügt wird, erstellt CfCT nur das Stack-Set.
**Anmerkung**  
Die Verwaltungskonto-ID der Organisation ist kein zulässiger Wert. CfCT unterstützt standardmäßig nicht die Bereitstellung von Stack-Instances im Verwaltungskonto der Organisation. Wenn Sie einen speziellen Anwendungsfall haben, finden Sie weitere Informationen unter [Root OU](https://docs.aws.amazon.com//controltower/latest/userguide/cfct-root-ou.html).

**export\$1outputs** — Liste von name/value Paaren, die SSM-Parameterschlüssel bezeichnen. Mit diesen SSM-Parameterschlüsseln können Sie Vorlagenausgaben im SSM-Parameterspeicher speichern. Die Ausgabe ist für die Referenzierung durch andere Ressourcen vorgesehen, die zuvor in der Manifestdatei definiert wurden.

```
export_outputs: # List of SSM parameters
  - name: [String]
    value: [String]
```
+ **Typ:** Liste von Schlüsselpaaren aus **Name** und **Wert**. Der **Name** enthält die `name` Zeichenfolge eines SSM-Parameterspeicherschlüssels, und der **Wert** enthält die `value` Zeichenfolge des Parameters.
+ **Gültige Werte:** Jede Zeichenfolge oder `$[output_CfnOutput-Logical-ID]` Variable, die der Ausgabevariablen der Vorlage *CfnOutput-Logical-ID* entspricht. Weitere Informationen zum Abschnitt Ausgaben in einer CloudFormation Vorlage finden Sie im *CloudFormation Benutzerhandbuch* unter [https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/outputs-section-structure.html](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/outputs-section-structure.html).
+ **Required**: No 

Der folgende Codeausschnitt speichert beispielsweise die `VPCID` Ausgabevariable der Vorlage in dem benannten SSM-Parameterschlüssel. `/org/member/audit/vpc_id`

```
export_outputs: # List of SSM parameters
  - name: /org/member/audit/VPC-ID
    value: $[output_VPCID]
```

**Anmerkung**  
Der Schlüsselname **export\$1outputs** kann einen anderen Wert als enthalten. `output` Wenn der **Name** beispielsweise lautet`/org/environment-name`, kann der **Wert** sein. `production`

**Regionen** — Liste der Regionen, in denen CfCT die CloudFormation Stack-Instances bereitstellen wird. 
+ **Typ:** Eine beliebige Liste mit Namen AWS kommerzieller Regionen, um anzugeben, dass diese Ressource in der angegebenen Regionsliste bereitgestellt wird. Wenn dieses Schlüsselwort nicht in der Manifestdatei vorhanden ist, werden die Ressourcen nur in der Heimatregion bereitgestellt.
+ **Required**: No 

# Stamm-OU
<a name="cfct-root-ou"></a>

 CFCT unterstützt **Root** als Wert für eine Organisationseinheit (OU) `organizational_units` in der **Manifest V2-Version (**2021-03-15). 
+ Wenn Sie die Bereitstellungsmethode von wählen `scp` oder`rcp`, wenn Sie Root unter hinzufügen`organizational_units`, wendet AWS Control Tower die Richtlinien auf alle OUs unter dem Root liegenden Objekte an. Wenn Sie die Bereitstellungsmethode von `stack_set` wählen und Root unter hinzufügen`organizational_units`, stellt CfCT die Stack-Sets in allen Konten unter dem Root bereit, die in AWS Control Tower registriert sind, mit Ausnahme des Verwaltungskontos.
+ Gemäß den Best Practices von AWS Control Tower ist das Verwaltungskonto nur für die Verwaltung von Mitgliedskonten und für Abrechnungszwecke vorgesehen. Führen Sie keine Produktionsworkloads im AWS Control Tower Tower-Managementkonto aus.

  Gemäß den Richtlinien für bewährte Methoden wird bei der Bereitstellung von AWS Control Tower das Verwaltungskonto unter die Root-OU gestellt, sodass es vollen Zugriff hat und keine zusätzlichen Ressourcen ausführt. Aus diesem Grund wird die **AWSControlTowerExecution**Rolle nicht für das Verwaltungskonto bereitgestellt.
+ Wir empfehlen Ihnen, diese bewährten Methoden für das Verwaltungskonto zu befolgen. Wenn Sie einen bestimmten Anwendungsfall haben, bei dem Sie Stacksets im Verwaltungskonto bereitstellen müssen, geben Sie **Konten** als Bereitstellungsziel an und geben Sie das Verwaltungskonto an. Andernfalls sollten Sie **Konten** nicht als Bereitstellungsziel angeben. Sie müssen die fehlenden Ressourcen, einschließlich der erforderlichen IAM-Rollen, im Verwaltungskonto erstellen.

Um Stacksets im Verwaltungskonto bereitzustellen, geben Sie es `accounts` als Bereitstellungsziel an und geben Sie das Verwaltungskonto an. Andernfalls sollten Sie Konten nicht als Bereitstellungsziel angeben.

```
---
region: your-home-region
version: 2021-03-15

resources:

  …truncated…

    deployment_targets:
      organizational_units:
        - Root
```

**Anmerkung**  
Die Root-OU-Funktion wird nur in der V2-Version der Manifestdatei (2021-03-15) unterstützt. Wenn Sie **Root** als OU hinzufügen`organizational_units`, fügen Sie keine weiteren hinzu. OUs

# Verschachtelte Organisationseinheit
<a name="cfct-nested-ou"></a>

CfCT unterstützt das Auflisten einer oder mehrerer verschachtelter Dateien OUs unter dem `organizational_units` Schlüsselwort in der Manifest V2-Version (2021-03-15). 

Ein vollständiger Pfad (ohne Root) für die verschachtelte Organisationseinheit ist erforderlich, wobei ein Doppelpunkt als Trennzeichen dazwischen verwendet wird. OUs Für die Bereitstellungsmethode `scp` oder `rcp` stellt AWS Control Tower das SCPs oder RCPs für die letzte Organisationseinheit im verschachtelten OU-Pfad bereit. Als Bereitstellungsmethode `stack_set` stellt AWS Control Tower die Stack-Sets für alle Konten unter der letzten OU im verschachtelten OU-Pfad bereit.

Betrachten Sie zum Beispiel den Pfad. `OUName1:OUName2:OUName3` Die letzte Organisationseinheit im Pfad ist`OUName3`. CfCT stellt die Sets „ SCPs Oder RCPs bis“ `OUName3` und „Stack“ nur für alle Konten bereit`OUName3`, die sich direkt darunter befinden.

```
---
region: your-home-region
version: 2021-03-15

resources:

  …truncated…

    deployment_targets:
      organizational_units:
        - OuName1:OUName2:OUName3
```

**Anmerkung**  
Die Funktion für verschachtelte Organisationseinheiten wird nur in der V2-Version der Manifestdatei (15.03.2021) unterstützt.

# Erstellen Sie Ihre eigenen Anpassungen
<a name="cfcn-byo-customizations"></a>

Um Ihre eigenen Anpassungen zu erstellen, können Sie die `manifest.yaml` CfCT-Datei ändern, indem Sie Dienststeuerungsrichtlinien (SCPs), Ressourcensteuerungsrichtlinien () und Ressourcen hinzufügen oder aktualisieren. RCPs CloudFormation Für Ressourcen, die bereitgestellt werden müssen, können Sie Konten hinzufügen oder entfernen und. OUs Sie können die Vorlagen in den Paketordnern hinzufügen oder ändern, eigene Ordner erstellen und auf die Vorlagen oder Ordner in der `manifest.yaml` Datei verweisen.

In diesem Abschnitt werden die beiden Hauptbestandteile der Erstellung eigener Anpassungen erläutert:
+ wie Sie Ihr eigenes Konfigurationspaket für Richtlinien zur Servicesteuerung einrichten
+ wie Sie Ihr eigenes Konfigurationspaket für AWS CloudFormation Stack-Sets einrichten

# Richten Sie ein Konfigurationspaket ein für SCPs oder RCPs
<a name="cfcn-set-up-custom-scps"></a>

In diesem Abschnitt wird erklärt, wie Sie ein Konfigurationspaket für Dienststeuerungsrichtlinien (SCPs) oder Ressourcensteuerungsrichtlinien (RCPs) erstellen. Die beiden Hauptteile dieses Prozesses sind (1) die Vorbereitung der CFCT-Manifestdatei und (2) die Vorbereitung Ihrer Ordnerstruktur.

## Schritt 1: Bearbeiten Sie die Datei manifest.yaml
<a name="cfct-byo-scp-step-1"></a>

Verwenden Sie die `manifest.yaml` Beispieldatei als Ausgangspunkt. Geben Sie alle erforderlichen Konfigurationen ein. Fügen Sie die `resource_file` und `deployment_targets` Details hinzu.

Der folgende Ausschnitt zeigt die Standard-Manifestdatei.

```
---
region: us-east-1
version: 2021-03-15

resources: []
```

Der Wert für `region` wird bei der Bereitstellung automatisch hinzugefügt. Er muss mit der Region übereinstimmen, in der Sie CfCT bereitgestellt haben. Diese Region muss mit der AWS Control Tower Tower-Region identisch sein.

Um ein benutzerdefiniertes SCP oder RCP zu dem `example-configuration` Ordner im Zip-Paket hinzuzufügen, das im Amazon S3 S3-Bucket gespeichert ist, öffnen Sie die `example-manifest.yaml` Datei und beginnen Sie mit der Bearbeitung.

```
---
region: your-home-region
version: 2021-03-15

resources:
  - name: test-preventive-controls
    description: To prevent from deleting or disabling resources in member accounts
    resource_file: policies/preventive-controls.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - OUName1
        - OUName2 

…truncated…
```

Der folgende Ausschnitt zeigt ein Beispiel für eine benutzerdefinierte Manifestdatei. Sie können mit einer einzigen Änderung mehr als eine Richtlinie hinzufügen.

```
---
region: us-east-1
version: 2021-03-15

resources:
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - OUName1
        - OUName2
```

## Schritt 2: Erstellen Sie eine Ordnerstruktur
<a name="cfct-byo-scp-step-2"></a>

Sie können diesen Schritt überspringen, wenn Sie eine Amazon S3 S3-URL für die Ressourcendatei verwenden und **Parameter** mit key/value Paaren verwenden.

Sie müssen eine SCP- oder RCP-Richtlinie im JSON-Format angeben, um das Manifest zu unterstützen, da die Manifestdatei auf die JSON-Datei verweist. Stellen Sie sicher, dass die Dateipfade mit den Pfadinformationen in der Manifestdatei übereinstimmen. 
+ Eine *JSON-Richtliniendatei* enthält das SCPs oder RCPs , für das die Bereitstellung erfolgen soll OUs.

Der folgende Ausschnitt zeigt die Ordnerstruktur für die Beispiel-Manifestdatei.

```
- manifest.yaml
- policies/
   - block-s3-public.json
```

Der folgende Ausschnitt ist ein Beispiel für eine Richtliniendatei. `block-s3-public.json`

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"GuardPutAccountPublicAccessBlock",
         "Effect":"Deny",
         "Action":"s3:PutAccountPublicAccessBlock",
         "Resource":"arn:aws:s3:::*"
      }
   ]
}
```

------

# Richten Sie ein Konfigurationspaket ein für CloudFormation StackSets
<a name="cfcn-byo-cfn-stacksets"></a>

In diesem Abschnitt wird erklärt, wie Sie ein Konfigurationspaket für CloudFormation StackSets einrichten. Die beiden Hauptteile dieses Prozesses sind: (1) Vorbereitung der Manifestdatei und (2) Aktualisierung der Ordnerstruktur.

## Schritt 1: Bearbeiten Sie die bestehende Manifestdatei
<a name="cfcn-byo-cfn-stacksets-step-1"></a>

Fügen Sie die neuen CloudFormation StackSets Informationen zur Manifestdatei hinzu, die Sie zuvor bearbeitet haben.

Nur zur besseren Übersicht: Der folgende Ausschnitt enthält dieselbe benutzerdefinierte Manifestdatei, die zuvor gezeigt wurde, um ein Konfigurationspaket für SCPs oder einzurichten. RCPs Jetzt können Sie diese Datei weiter bearbeiten, um die Details zu Ihren Ressourcen aufzunehmen.

```
---
region: us-east-1
version: 2021-03-15

resources:
  
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
    organizational_units: #array of strings
    - OUName1
    - OUName2
```

Der folgende Ausschnitt zeigt eine bearbeitete Beispiel-Manifestdatei, die die Details enthält. `resources` Die Reihenfolge von `resources` bestimmt die Ausführungsreihenfolge für die Erstellung von `resources` Abhängigkeiten. Sie können die folgende Beispiel-Manifestdatei entsprechend Ihren Geschäftsanforderungen bearbeiten.

```
---
region: your-home-region
version: 2021-03-15

…truncated…

resources:
  - name: stackset-1
    resource_file: templates/create-ssm-parameter-keys-1.template
    parameters:
      - parameter_key: parameter-1
        parameter_value: value-1
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - account number or account name
        - 123456789123
      organizational_units: #array of strings, ou ids, ou-xxxx
        - OuName1
        - OUName2 
    export_outputs:
      - name: /org/member/test-ssm/app-id
        value: $[output_ApplicationId]
    regions:
      - region-name

  - name: stackset-2
    resource_file: s3://bucket-name/key-name
    parameters:
      - parameter_key: parameter-1
        parameter_value: value-1
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - account number or account name
        - 123456789123
      organizational_units: #array of strings
        - OuName1
        - OUName2 
regions:
  - region-name
```

Das folgende Beispiel zeigt, dass Sie der Manifestdatei mehr als eine CloudFormation Ressource hinzufügen können.

```
---
region: us-east-1
version: 2021-03-15

resources:
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - Custom
        - Sandbox

  - name: transit-network
    resource_file: templates/transit-gateway.template
    parameter_file: parameters/transit-gateway.json
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - Prod
        - 123456789123 #Network
      organizational_units: #array of strings
        - Custom
    export_outputs:
      - name: /org/network/transit-gateway-id
        value: $[output_TransitGatewayID]
    regions:
      - us-east-1
```

## Schritt 2: Aktualisieren Sie die Ordnerstruktur
<a name="cfct-byo-cfn-stacksets-step-2"></a>

Wenn Sie die Ordnerstruktur aktualisieren, können Sie alle unterstützenden CloudFormation Vorlagendateien und SCP- oder RCP-Richtliniendateien, die sich in der Manifestdatei befinden, einbeziehen. Stellen Sie sicher, dass die Dateipfade mit den Angaben in der Manifestdatei übereinstimmen. 
+ Eine *Vorlagendatei* enthält die AWS Ressourcen, die bereitgestellt werden sollen, OUs und Konten.
+ Eine *Richtliniendatei* enthält die in der Vorlagendatei verwendeten Eingabeparameter.

Das folgende Beispiel zeigt die Ordnerstruktur für die in [Schritt 1](#cfcn-byo-cfn-stacksets-step-1) erstellte Beispielmanifestdatei.

```
- manifest.yaml
- policies/
   - block-s3-public.json
- templates/
   - transit-gateway.template
```

# Der 'alfred'-Helfer und die CloudFormation Parameterdateien
<a name="alfred-helper"></a>

 CfCT bietet Ihnen einen Mechanismus, der als *Alfred-Helper* bekannt ist, um den Wert für einen [SSM-Parameterspeicher-Schlüssel](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html) abzurufen, der in der CloudFormation Vorlage definiert ist. Mit dem *Alfred-Helper* können Sie Werte verwenden, die im SSM-Parameterspeicher gespeichert sind, ohne die Vorlage zu aktualisieren. CloudFormation Weitere Informationen finden Sie unter [Was ist eine CloudFormation Vorlage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html#gettingstarted.templatebasics.what)? im *CloudFormation Benutzerhandbuch*. 

**Wichtig**  
 Der *Alfred* Helper hat zwei Einschränkungen. Parameter sind nur in der Heimatregion des AWS Control Tower Tower-Managementkontos verfügbar. Als bewährte Methode sollten Sie erwägen, mit Werten zu arbeiten, die sich von Stack-Instance zu Stack-Instance nicht ändern. Wenn der 'alfred'-Helper Parameter abruft, wählt er eine zufällige Stack-Instanz aus dem Stack-Set aus, das die Variable exportiert. 

## Beispiel
<a name="w2aac28c41c15c13b7"></a>

 Nehmen wir an, Sie haben zwei CloudFormation Stack-Sets. *Stack-Set 1* hat eine Stack-Instance und wird auf einem Konto in einer Region bereitgestellt. Es erstellt eine Amazon-VPC und Subnetze in einer Availability Zone, und die `VPC ID` und `subnet ID` müssen als Parameterwerte an *Stack-Set 2* übergeben werden. Bevor das `VPC ID` und an *Stack-Set 2* übergeben werden `subnet ID` kann, `subnet ID` muss das `VPC ID` und mithilfe von in *Stack-Set 1* gespeichert werden. `AWS:::SSM::Parameter` Weitere Informationen finden Sie unter [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html) im *CloudFormation -Benutzerhandbuch*. 

**CloudFormation Stapelsatz 1:**

 Im folgenden Snippet kann der *Alfred-Helper* Werte für `VPC ID` und `subnet ID` aus dem Parameterspeicher abrufen und sie als Eingabe an die StackSet Zustandsmaschine übergeben. 

```
VpcIdParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: '/stack_1/vpc/id'
      Description: Contains the VPC id
      Type: String
      Value: !Ref MyVpc

SubnetIdParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: '/stack_1/subnet/id'
      Description: Contains the subnet id
      Type: String
      Value: !Ref MySubnet
```

**CloudFormation Stapelsatz 2:**

 Das Snippet zeigt die Parameter, die in der CloudFormation `manifest.yaml` Stack-2-Datei angegeben sind. 

```
parameters:
      - parameter_key: VpcId
        parameter_value: $[alfred_ssm_/stack_1/vpc/id]
      - parameter_key: SubnetId
        parameter_value: $[alfred_ssm_/stack_1/subnet/id]
```

**CloudFormation Stack-Set 2.1:**

 Das Snippet zeigt, dass Sie `alfred_ssm` Eigenschaften auflisten können, um Typparameter zu unterstützen. *CommaDelimitedList* Weitere Informationen finden Sie unter [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type) im *CloudFormation -Benutzerhandbuch*. 

```
parameters:
      - parameter_key: VpcId # Type: String
        parameter_value: $[alfred_ssm_/stack_1/vpc/id']
      - parameter_key: SubnetId # Type: String
        parameter_value: $[ alfred_ssm_/stack_1/subnet/id']
      - parameter_key: AvailablityZones # Type: CommaDelimitedList
        parameter_value:   - "$[alfred_ssm_/availability_zone_1]"  - "$[alfred_ssm_/availability_zone_2]"
```

**JSON-Schema für das Anpassungspaket**  
Das JSON-Schema für das Anpassungspaket für CfCT befindet sich im [Quellcode-Repository unter GitHub](https://github.com/aws-solutions/aws-control-tower-customizations). Sie können das Schema mit vielen Ihrer bevorzugten Entwicklungstools verwenden, und es kann hilfreich sein, um Fehler beim Erstellen Ihrer eigenen `manifest.yaml` CfCT-Datei zu reduzieren.

# Versionsupgrades für das cFCT-Manifest
<a name="cfct-compatibility"></a>

Informationen zur neuesten Version von *Customizations for AWS Control Tower* (cFCT) finden Sie in der [`CHANGELOG.md`Datei](https://github.com/aws-solutions/aws-control-tower-customizations/blob/master/CHANGELOG.md) im GitHub Repository. 

**Warnung**  
In Version 2.2.0 von *Customizations for AWS Control Tower* (cFCT) wurde ein cFCT-Manifestschema (Version *2021-03-15*) eingeführt, um es an den entsprechenden Service anzupassen. AWS APIs Das Manifestschema ermöglicht es einer einzigen manifest.yaml-Datei, unterstützte Ressourcen (CloudFormation Vorlagen, und) über entkoppelte Workflows zu verwalten. SCPs RCPs DevOps   
*Es wird dringend empfohlen, das CfCT-Manifestschema von Version *2020-01-01* auf Version 2021-03-15 oder höher zu aktualisieren.*  
*CfCT unterstützt weiterhin die Versionen *2021-03-15* und 2020-01-01 der Datei.* `manifest.yaml` Es sind keine Änderungen an Ihrer bestehenden Konfiguration erforderlich. Version *2020-01-01* befindet sich jedoch am **Ende des Support**. *Wir stellen keine Updates mehr bereit und fügen keine Verbesserungen zu Version 2020-01-01 mehr hinzu.* *Die Funktionen Root-OU und verschachtelte Organisationseinheiten werden in Version 2020-01-01 nicht unterstützt.* 

***Veraltete Eigenschaften in der CfCT-Manifestversion 2021-03-15:***

```
organization_policies
policy_file
apply_to_accounts_in_ou

cloudformation_resources
template_file
deploy_to_account
deploy_to_ou
ssm_parameters
```

## Obligatorische cFCT-Upgrade-Schritte
<a name="mandatory-upgrade-steps"></a>

Wenn Sie auf die Version *2021-03-15* des CfCT-Manifestschemas aktualisieren, müssen Sie die folgenden Änderungen vornehmen, um Ihre Dateien zu aktualisieren. In den nächsten Abschnitten werden die obligatorischen und empfohlenen Änderungen für den Übergang beschrieben.

**Richtlinien von Organizations**

1. **Verschieben Sie das SCPs oder RCPs unter **organization\$1policies** unter neue Eigenschaftsressourcen.**

1. **Ändern Sie die Eigenschaft **policy\$1file in die neue Eigenschaft resource\$1file**.**

1. **Ändern Sie die Eigenschaft **apply\$1to\$1accounts\$1in\$1ou in die neue Eigenschaft deployment\$1targets**.** **Die OU-Liste sollte unter der Untereigenschaft organizational\$1units definiert werden.** Die Untereigenschaft **Konten** wird für Unternehmensrichtlinien nicht unterstützt.

1. **Fügen Sie eine neue Eigenschaft **deploy\$1method** mit dem Wert **scp** oder rcp hinzu.** 

**CloudFormation Ressourcen**

1. **Verschieben Sie die CloudFormation Ressourcen unter **cloudformation\$1resources unter neue Eigenschaftsressourcen**.**

1. **Ändern Sie die Eigenschaft **template\$1file in die neue Eigenschaft resource\$1file**.**

1. **Ändern Sie die Eigenschaft deploy\$1to\$1ou in die neue Eigenschaft **deployment\$1targets**.** **Die OU-Liste sollte unter der Untereigenschaft organizational\$1units definiert werden.**

1. **Ändern Sie die Eigenschaft **deploy\$1to\$1accounts in die neue Eigenschaft deployment\$1targets**.** **Die Kontoliste sollte unter Konten mit Untereigenschaften definiert werden.**

1. **Ändern Sie die Eigenschaft **ssm\$1parameters** in die neue Eigenschaft export\$1outputs.**

## Sehr empfehlenswerte cFcT-Upgrade-Schritte
<a name="highly-recommended-upgrade-steps"></a>

**CloudFormation Parameter**

1. **Ändern Sie die Eigenschaft **parameter\$1file** in neue Eigenschaftsparameter.**

1. Entfernen Sie den Dateipfad aus dem Wert der Eigenschaft **parameter\$1file**.

1. Kopieren Sie den Parameterschlüssel und den Parameterwert aus der vorhandenen Parameter-JSON-Datei in das neue Format für die **Parameter-Eigenschaft**. Dies würde Ihnen helfen, sie in der Manifestdatei zu verwalten.

**Anmerkung**  
*Die Eigenschaft **parameter\$1file** wird in der CfCT-Manifestversion 2021-03-15 unterstützt.*