

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 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.