

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.

# Bootstrapping-basierte Stacks Windows CloudFormation
<a name="cfn-windows-stacks-bootstrapping"></a>

In diesem Thema wird beschrieben, wie Sie einen Windows-Stack booten und Probleme bei der Stackerstellung beheben. 

**Topics**
+ [Benutzerdaten in EC2-Instances](#cfn-windows-bootstrapping-user-data)
+ [CloudFormation Hilfsskripte](#cfn-windows-bootstrapping-helper-scripts)
+ [Beispiel für das Bootstrapping eines Windows-Stacks](#cfn-windows-bootstrapping-example)
+ [Backslashes in Windows-Dateipfaden entschärfen](#cfn-windows-stacks-escape-backslashes)
+ [Dienste Windows-Verwaltung](#cfn-windows-stacks-manage-windows-services)
+ [Beheben Sie Probleme bei der Stapelerstellung](#cfn-windows-stacks-troubleshooting)

## Benutzerdaten in EC2-Instances
<a name="cfn-windows-bootstrapping-user-data"></a>

Benutzerdaten sind ein Amazon EC2-Feature, mit dem Sie Skripte oder Konfigurationsinformationen an eine EC2-Instance übergeben können, wenn diese gestartet wird. 

Für Windows EC2-Instances:
+ Sie können entweder Batch-Skripte (mit `<script>`-Tags) oder PowerShell-Skripte (mit `<powershell>`-Tags) verwenden.
+ Die Ausführung des Skripts wird von EC2Launchübernommen.

**Wichtig**  
Wenn Sie Ihr eigenes Windows AMI für die Verwendung mit erstellen CloudFormation, stellen Sie sicher, dass EC2Launch v2 ordnungsgemäß konfiguriert ist. EC2Launchv2 ist erforderlich, damit CloudFormation Bootstrapping-Tools Windows Instanzen während der Stack-Erstellung ordnungsgemäß initialisieren und konfigurieren können. Weitere Informationen finden Sie unter [Verwenden Sie den EC2Launch v2-Agent, um Aufgaben während des Starts der EC2-Windows-Instance auszuführen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2launch-v2.html) im *Amazon EC2-Benutzerhandbuch*.  
Informationen dazu AWS Windows AMIs finden Sie in der [AWSWindowsAMI-Referenz](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/windows-amis.html).

## CloudFormation Hilfsskripte
<a name="cfn-windows-bootstrapping-helper-scripts"></a>

Hilfsskripte sind Dienstprogramme für die Konfiguration von Instances während des Bootstrapping-Prozesses. In Verbindung mit Amazon EC2-Benutzerdaten bieten sie leistungsstarke Konfigurationsoptionen.

CloudFormation stellt die folgenden Python-Hilfsskripten bereit, mit denen Sie Software installieren und Dienste auf einer Amazon EC2 EC2-Instance starten können, die Sie als Teil Ihres Stacks erstellen:
+  `cfn-init`- Zum Abrufen und Interpretieren von Ressourcen-Metadaten, Installieren von Paketen, Erstellen von Dateien und Starten von Diensten.
+  `cfn-signal`- Signalisieren Sie mit,`CreationPolicy` damit Sie andere Ressourcen im Stack synchronisieren können, wenn die vorausgesetzte Ressource oder Anwendung bereit ist.
+  `cfn-get-metadata`- Zum Abrufen von Metadaten für eine Ressource oder eines Pfads zu einem bestimmten Schlüssel.
+  `cfn-hup`- Verwenden Sie diese Option, um nach Aktualisierungen von Metadaten zu suchen und benutzerdefinierte Hooks auszuführen, wenn Änderungen entdeckt werden.

Sie können die Skripts direkt aus Ihrer Vorlage aufrufen. Die Skripts funktionieren in Verbindung mit Ressourcen-Metadaten, die in derselben Vorlage festgelegt werden. Die Skripts laufen in der Amazon EC2-Instance während der Stack-Erstellung.

Weitere Informationen finden Sie in der [Referenz zu CloudFormation Hilfsskripten](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/cfn-helper-scripts-reference.html) im *CloudFormation Template Reference Guide.*

## Beispiel für das Bootstrapping eines Windows-Stacks
<a name="cfn-windows-bootstrapping-example"></a>

Schauen wir uns ein Beispiel für eine Windows Server-Vorlage an, die die folgenden Aktionen ausführt:
+ Startet eine EC2-Instance mit dem Namen `TestInstance` von einem Windows Server 2022 AMI.
+ Erzeugt eine einfache Testdatei, um zu überprüfen, ob `cfn-init` funktioniert.
+ Konfiguriert `cfn-hup` für die laufende Konfigurationsverwaltung.
+ Verwendet ein `CreationPolicy`, um sicherzustellen, dass die Instance den erfolgreichen Abschluss signalisiert.

Das Hilfsskript `cfn-init` wird verwendet, um jede dieser Aktionen auf der Grundlage der Informationen in der Ressource `AWS::CloudFormation::Init` in der Vorlage durchzuführen.

Der Abschnitt `AWS::CloudFormation::Init` heißt `TestInstance` und beginnt mit der folgenden Erklärung.

```
TestInstance:
  Type: AWS::EC2::Instance
  Metadata:
    AWS::CloudFormation::Init:
      configSets:
        default:
          - create_files
          - start_services
```

Danach wird der Abschnitt `files` von `AWS::CloudFormation::Init` deklariert.

```
      create_files:
        files:
          c:\cfn\test.txt:
            content: !Sub |
              Hello from ${AWS::StackName}
          c:\cfn\cfn-hup.conf:
            content: !Sub |
              [main]
              stack=${AWS::StackName}
              region=${AWS::Region}
              interval=2
          c:\cfn\hooks.d\cfn-auto-reloader.conf:
            content: !Sub |
              [cfn-auto-reloader-hook]
              triggers=post.update
              path=Resources.TestInstance.Metadata.AWS::CloudFormation::Init
              action=cfn-init.exe -v -s ${AWS::StackName} -r TestInstance -c default --region ${AWS::Region}
```

Hier werden drei Dateien erstellt und im Verzeichnis `C:\cfn` auf der Serverinstance abgelegt:
+ `test.txt`, eine einfache Testdatei, die überprüft, ob `cfn-init` korrekt funktioniert und Dateien mit dynamischem Inhalt erstellen kann.
+ `cfn-hup.conf`, die Konfigurationsdatei für `cfn-hup` mit einem 2-Minuten-Prüfintervall.
+ `cfn-auto-reloader.conf`, die Konfigurationsdatei für den Hook, der von `cfn-hup` verwendet wird, um eine Aktualisierung (Aufruf von `cfn-init`) zu initiieren, wenn sich die Metadaten in `AWS::CloudFormation::Init` ändern.

Als nächstes folgt der Abschnitt `start_services`, der die Windows-Dienste konfiguriert.

```
      start_services:
        services:
          windows:
            cfn-hup:
              enabled: true
              ensureRunning: true
              files:
                - c:\cfn\cfn-hup.conf
                - c:\cfn\hooks.d\cfn-auto-reloader.conf
```

Dieser Abschnitt stellt sicher, dass der Dienst `cfn-hup` gestartet wird und automatisch neu startet, wenn die Konfigurationsdateien geändert werden. Der Dienst sucht nach Änderungen an den CloudFormation Metadaten und wird erneut ausgeführt`cfn-init`, wenn Aktualisierungen erkannt werden.

Als nächstes folgt der Abschnitt `Properties` .

```
TestInstance:
  Type: AWS::EC2::Instance
  CreationPolicy:
    ResourceSignal:
      Timeout: PT20M
  Metadata:
    AWS::CloudFormation::Init:
      # ... metadata configuration ...
  Properties:
    InstanceType: t2.large
    ImageId: '{{resolve:ssm:/aws/service/ami-windows-latest/Windows_Server-2022-English-Full-Base}}'
    SecurityGroupIds:
      - !Ref InstanceSecurityGroup
    KeyName: !Ref KeyPairName
    UserData:
      Fn::Base64: !Sub |
        <powershell>
        cfn-init.exe -v -s ${AWS::StackName} -r TestInstance -c default --region ${AWS::Region}
        cfn-signal.exe -e $lastexitcode --stack ${AWS::StackName} --resource TestInstance --region ${AWS::Region}
        </powershell>
```

In diesem Abschnitt enthält die Eigenschaft `UserData` ein PowerShell-Skript, das von EC2Launchausgeführt wird und von `<powershell>`-Tags umgeben ist. Das Skript wird `cfn-init` mit dem `default` configSet ausgeführt und verwendet dann, `cfn-signal` um den Exit-Code an CloudFormation zurückzumelden. Das `CreationPolicy` wird verwendet, um sicherzustellen, dass die Instance ordnungsgemäß konfiguriert ist, bevor die Stack-Erstellung als abgeschlossen gilt.

Die Eigenschaft `ImageId` verwendet einen öffentlichen Parameter des Systems Manager Parameter Store, um automatisch die neueste Windows Server 2022 AMI-ID abzurufen. Dieser Ansatz macht regionalspezifische AMI-Zuordnungen überflüssig und stellt sicher, dass Sie immer das aktuellste AMI erhalten. Die Verwendung von Systems Manager Manager-Parametern für AMI IDs ist eine bewährte Methode zur Pflege aktueller AMI-Referenzen. Wenn Sie eine Verbindung zu Ihrer Instance herstellen möchten, vergewissern Sie sich, dass die Eigenschaft `SecurityGroupIds` auf eine Sicherheitsgruppe verweist, die den RDP-Zugriff erlaubt.

Das `CreationPolicy` wird als Teil der Ressourceneigenschaften deklariert und gibt eine Timeout-Periode an. Der Befehl `cfn-signal` in den Benutzerdaten signalisiert, wenn die Konfiguration der Instance abgeschlossen ist:

```
TestInstance:
  Type: AWS::EC2::Instance
  CreationPolicy:
    ResourceSignal:
      Timeout: PT20M
  Properties:
    # ... other properties ...
```

Da der Bootstrapping-Prozess minimal ist und nur Dateien erstellt und Dienste gestartet werden, `CreationPolicy` wartet der 20 Minuten (PT20M), bevor das Timeout eintritt. Die Zeitüberschreitung wird im Format ISO 8601 Dauer angegeben. Beachten Sie, dass Windows-Instances in der Regel länger zum Starten brauchen als Linux-Instances. Testen Sie daher gründlich, um die besten Timeout-Werte für Ihre Bedürfnisse zu ermitteln.

Wenn alles gut geht, wird `CreationPolicy` erfolgreich abgeschlossen und Sie können auf die Instance Windows Server über ihre öffentliche IP-Adresse zugreifen. Sobald die Stack-Erstellung abgeschlossen ist, werden die Instanz-ID und die öffentliche IP-Adresse auf der Registerkarte **Ausgaben der Konsole** angezeigt. CloudFormation 

```
Outputs:
  InstanceId:
    Value: !Ref TestInstance
    Description: Instance ID of the Windows Server
  PublicIP:
    Value: !GetAtt TestInstance.PublicIp
    Description: Public IP address of the Windows Server
```

Sie können auch manuell überprüfen, ob das Bootstrapping korrekt funktioniert hat, indem Sie sich über RDP mit der Instance verbinden und überprüfen, ob die Datei `C:\cfn\test.txt` existiert und den erwarteten Inhalt enthält. Weitere Informationen zum Verbinden mit Windows Instances finden Sie unter [Verbinden mit Ihrer Windows Instance über RDP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connecting_to_windows_instance.html) im *Amazon EC2-Benutzerhandbuch*.

## Backslashes in Windows-Dateipfaden entschärfen
<a name="cfn-windows-stacks-escape-backslashes"></a>

Denken Sie beim Verweisen auf Windows Pfade in CloudFormation Vorlagen immer daran, Backslashes (`\`) entsprechend dem verwendeten Vorlagenformat korrekt zu maskieren.
+ Für JSON-Vorlagen müssen Sie doppelte Backslashes in Windows-Dateipfaden verwenden, da JSON den Backslash als Escape-Zeichen behandelt. Der erste Backslash umgeht den zweiten, was zu der Interpretation eines einzelnen, buchstäblichen Backslashs führt.

  ```
  "commands" : {
    "1-extract" : {
      "command" : "C:\\SharePoint\\SharePointFoundation2010.exe /extract:C:\\SharePoint\\SPF2010 /quiet /log:C:\\SharePoint\\SharePointFoundation2010-extract.log"
    }
  }
  ```
+ Für YAML-Vorlagen sind einfache Backslashes in der Regel ausreichend.

  ```
  commands:
    1-extract:
      command: C:\SharePoint\SharePointFoundation2010.exe /extract:C:\SharePoint\SPF2010 /quiet /log:C:\SharePoint\SharePointFoundation2010-extract.log
  ```

## Dienste Windows-Verwaltung
<a name="cfn-windows-stacks-manage-windows-services"></a>

Sie verwalten Windows-Dienste auf die gleiche Weise wie Linux-Dienste, nur dass Sie einen `windows`-Schlüssel anstelle von `sysvinit`verwenden. Das folgende Beispiel startet den Dienst `cfn-hup`, setzt ihn auf Automatisch und startet den Dienst neu, wenn `cfn-init` die Konfigurationsdateien `c:\cfn\cfn-hup.conf` oder `c:\cfn\hooks.d\cfn-auto-reloader.conf` ändert.

```
        services:
          windows:
            cfn-hup:
              enabled: true
              ensureRunning: true
              files:
                - c:\cfn\cfn-hup.conf
                - c:\cfn\hooks.d\cfn-auto-reloader.conf
```

Sie können andere Windows-Dienste auf die gleiche Weise verwalten, indem Sie den Namen und nicht den Anzeigenamen verwenden, um auf den Dienst zu verweisen.

## Beheben Sie Probleme bei der Stapelerstellung
<a name="cfn-windows-stacks-troubleshooting"></a>

Wenn Ihr Stack bei der Erstellung fehlschlägt, wird standardmäßig ein Rollback durchgeführt. Dies ist zwar in der Regel ein gutes Standardverhalten, da unnötige Kosten vermieden werden, es ist aber schwierig zu debuggen, warum bei der Stack-Erstellung ein Fehler auftrat.

**Um dieses Verhalten zu deaktivieren, wenn Sie Ihren Stack mit der CloudFormation Konsole erstellen oder aktualisieren, wählen Sie unter Optionen für Stapelfehler die Option **Erfolgreich bereitgestellte Ressourcen beibehalten** aus.** Weitere Informationen finden Sie unter [Wählen Sie aus, wie mit Fehlern bei der Bereitstellung von Ressourcen umgegangen werden soll](stack-failure-options.md). Damit können Sie sich bei Ihrer Instance anmelden und die Protokolldateien einsehen, um Probleme bei der Ausführung Ihrer Startskripte zu ermitteln.

Wichtige Protokolle, die sich Sie ansehen sollten:
+ Das EC2-Konfigurationsprotokoll unter `%ProgramData%\Amazon\EC2Launch\log\agent.log`
+ Das **cfn-init**-Protokoll bei `C:\cfn\log\cfn-init.log` (überprüfen Sie Exit-Codes und Fehlermeldungen für bestimmte Fehlerpunkte)

Weitere Protokolle finden Sie in den folgenden Themen im *Amazon-EC2-Benutzerhandbuch*:
+ [EC2LaunchVerzeichnisstruktur](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2config-service.html#UsingConfigXML_WinAMI)
+ [EC2Launch v2 Verzeichnisstruktur](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2launch-v2.html#ec2launch-v2-directory)

Weitere Informationen zur Behebung von Bootstrapping-Problemen finden Sie unter [Wie behebe ich Probleme mit Hilfsskripten, die in einem CloudFormation Stapel mit Instanzen kein Bootstrap](https://repost.aws/knowledge-center/cloudformation-helper-scripts-windows) durchführen können? Windows .