

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.

# Validierung und Fehlerbehebung bei Containerflotteneinsätzen
<a name="containers-deployment-validation"></a>

Eine *Flottenbereitstellung*, die in diesem Thema als *Bereitstellung* bezeichnet wird, ist der Prozess, bei dem die Container auf den Instances einer Containerflotte durch Container ersetzt werden, die die neuen Einstellungen der Flotte verwenden, z. B. eine neue Version der Containergruppen-Definition. Amazon GameLift Servers Anstatt alle laufenden Container auf einmal zu ersetzen, überprüft ein Deployment zunächst, ob die neuen Container Spielsitzungen hosten können, und ersetzt dann nach und nach die restlichen Container, um catch Änderungen zu erkennen, bevor sie für die gesamte Flotte bereitgestellt werden. Eine Containerflotte startet einen Einsatz in drei Situationen:
+ **Wenn Sie eine Flotte mit einer Containergruppendefinition erstellen.** Wenn Ihre [CreateContainerFleet](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateContainerFleet.html)Anfrage eine Definition einer Spielserver-Containergruppe enthält, startet Fleet Creation eine Bereitstellung, bei der Ihre Container auf den neuen Instances der Flotte installiert werden. Wenn Sie eine Flotte ohne Container-Gruppendefinition erstellen, werden keine Instances bereitgestellt und die Flotte wird erst bereitgestellt, wenn Sie eine Gameserver-Containergruppen-Definition hinzufügen.
+ **Wenn Sie die Containergruppendefinitionen oder andere Containereinstellungen der Flotte aktualisieren.** [UpdateContainerFleet](https://docs.aws.amazon.com/gamelift/latest/apireference/API_UpdateContainerFleet.html)startet ein Deployment, wenn durch das Update die Container geändert werden, die von der Flotte betrieben werden, z. B. wenn Sie eine neue Version der Spielserver-Containergruppen-Definition angeben. Ein Update, das keine dieser Einstellungen ändert, startet keine Bereitstellung. Informationen darüber, mit welchen Einstellungen eine Bereitstellung gestartet wird, finden Sie unter[Aktualisiere ein GameLift Amazon-Server verwaltete Containerflotte](containers-update-fleet.md).
+ **Wenn Sie Standorte zu einer aktiven Flotte hinzufügen.** Amazon GameLift Serversstartet eine Bereitstellung an den neuen Standorten mithilfe der konfigurierten Containergruppendefinitionen der Flotte. Bestehende Standorte werden nicht neu bereitgestellt. Sie können keine Standorte hinzufügen, während eine weitere Bereitstellung läuft.

Um die Details einer Bereitstellung einzusehen, rufen Sie [DescribeFleetDeployment](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeFleetDeployment.html), was ein [FleetDeployment](https://docs.aws.amazon.com/gamelift/latest/apireference/API_FleetDeployment.html)Objekt zurückgibt, auf. Es enthält die Bereitstellungs-ID, den Status und die Konfiguration sowie die Versionen der Container-Gruppendefinition, die bereitgestellt werden, und die Rollback-Versionen. Das `DeploymentDetails.LatestDeploymentId` Eigentum der Flotte gibt den letzten Einsatz an.

**Anmerkung**  
Bereitstellungen gelten nur für verwaltete Containerflotten.

## Konfigurieren Sie eine Bereitstellung
<a name="containers-deployment-validation-config"></a>

Bei einer Bereitstellung [DeploymentConfiguration](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeploymentConfiguration.html)handelt es sich um ein Regelwerk, das steuert, wie die Bereitstellung in der gesamten Flotte abläuft und was passiert, wenn sie fehlschlägt. Informationen zu den Werten und Standardwerten der einzelnen Einstellungen finden Sie [DeploymentConfiguration](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeploymentConfiguration.html)in der *Amazon GameLift ServersAPI-Referenz.*

Sie legen die Bereitstellungskonfiguration fest, wenn Sie die Flotte in der Konsole aufrufen `UpdateContainerFleet` oder bearbeiten. `CreateContainerFleet`akzeptiert keine Bereitstellungskonfiguration, sodass bei der ersten Bereitstellung einer Flotte immer die Standardwerte verwendet werden.

## Wie GameLift Amazon-Server validiert eine Bereitstellung
<a name="containers-deployment-validation-howitworks"></a>

Wenn ein Einsatz beginnt, validiert er Amazon GameLift Servers zunächst die Spielserver-Containergruppen an jedem Standort der Flotte. Die neuen Container werden mit einem kleinen Teil der vorhandenen Kapazität der Flotte betrieben und überprüft, ob sie wieder funktionsfähig sind. Eine neue Spieleserver-Containergruppe ist *fehlerfrei*, wenn ein Spieleserver-Container anruft `ProcessReady()` und meldet, dass er bereit ist, Spielsitzungen zu hosten.

Bei dieser ersten Validierung werden Spieleserver-Containergruppen überprüft. Wenn Ihre Flotte auch eine Containergruppendefinition pro Instanz verwendet, Amazon GameLift Servers werden diese Gruppen nach der Aktualisierung der Spieleservergruppen aktualisiert. Amazon GameLift Serversüberprüft die Gruppen pro Instanz separat, bevor die Bereitstellung abgeschlossen ist. Sie verwenden nicht den Check des Spieleservers`ProcessReady()`.

Die Überprüfung schlägt fehl, wenn eine neue Gameserver-Containergruppe nicht wieder funktionsfähig ist, bevor sie Amazon GameLift Servers aufhört zu warten. Informationen zu häufigen Gründen und zu deren Untersuchung finden Sie unter[Debuggen Sie eine beeinträchtigte Bereitstellung](#containers-deployment-validation-debug).

Schlägt die Überprüfung fehl, wird der Bereitstellungsstatus Amazon GameLift Servers angewendet `ImpairmentStrategy` und der Bereitstellungsstatus auf `IMPAIRED` (für`MAINTAIN`) oder `ROLLBACK_IN_PROGRESS` (für`ROLLBACK`) gesetzt. Erst wenn die Validierung an einem Standort erfolgreich war, werden die verbleibenden Container, auf denen deine Spieleserver dort laufen, Amazon GameLift Servers ersetzt.

### Wie lange dauert die Validierung
<a name="containers-deployment-validation-timeouts"></a>

Die Validierung dauert länger, wenn die Kapazität, die für die Validierung Amazon GameLift Servers verwendet wird, das Hosten geschützter Spielsitzungen ist. Die Flotte `NewGameSessionProtectionPolicy` bestimmt den Standardschutz für neue Spielsitzungen. Gültige Werte sind `NoProtection` und `FullProtection`. Der Einsatz `ProtectionStrategy` bestimmt, ob der Einsatz diesem Schutz gerecht wird. Gültige Werte sind `WITH_PROTECTION` und `IGNORE_PROTECTION`.

Wenn die Flotte auf `NewGameSessionProtectionPolicy` eingestellt ist `FullProtection` und der Einsatz auf `ProtectionStrategy` eingestellt ist`WITH_PROTECTION`, Amazon GameLift Servers kann ein längeres Validierungs-Timeout für geschützte Spielsitzungen beendet werden. Bei jeder anderen Kombination wird ein kürzeres Timeout verwendet.

**Wichtig**  
Wenn Ihre neuen Container nie wieder funktionsfähig sind und die Flotte `FullProtection` bei einem `WITH_PROTECTION` Einsatz ausgelastet ist, kann der `IN_PROGRESS` Status des Einsatzes bis zum Ende der geschützten Spielsitzungen beibehalten werden, bevor ein Fehler gemeldet wird. Um ein schnelleres Signal zu erhalten, stellen Sie neue Container-Images bereit, `IGNORE_PROTECTION` während Sie sie testen, oder brechen Sie den Einsatz selbst ab. Anweisungen zum Stornieren einer Bereitstellung finden Sie unter[Brechen Sie eine Bereitstellung ab, indem Sie eine neue starten](#containers-deployment-validation-cancel).  
Wenn du einzelne Spielsitzungen mit [UpdateGameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_UpdateGameSession.html)einer Flotte schützt`NoProtection`, deren `NewGameSessionProtectionPolicy` eigene Flotte ihre Wartezeit Amazon GameLift Servers nicht verlängert. Wenn diese Spielsitzungen nicht rechtzeitig enden, kann die Validierung fehlschlagen, obwohl die neue Konfiguration funktioniert.

## Verfolgen Sie den Bereitstellungsstatus
<a name="containers-deployment-validation-status"></a>

Um einen Einsatz in der [Amazon GameLift ServersKonsole](https://console.aws.amazon.com/gamelift/) zu verfolgen, öffnen Sie die Flotte und wählen Sie den Tab **Bereitstellungen.** Um sie mit dem AWS Command Line Interface (AWS CLI) zu verfolgen, suchen Sie [list-fleet-deployments](https://docs.aws.amazon.com/cli/latest/reference/gamelift/list-fleet-deployments.html)nach einer Bereitstellungs-ID und dann [describe-fleet-deployment](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-deployment.html)nach den Details einer einzelnen Bereitstellung.

Informationen zu den Werten für den Bereitstellungsstatus und deren Bedeutung finden Sie [DeploymentStatus](https://docs.aws.amazon.com/gamelift/latest/apireference/API_FleetDeployment.html#gameliftservers-Type-FleetDeployment-DeploymentStatus)in der *Amazon GameLift ServersAPI-Referenz*.

## Debuggen Sie eine beeinträchtigte Bereitstellung
<a name="containers-deployment-validation-debug"></a>

Ein beeinträchtigtes Deployment bedeutet, dass die neuen Container während der Validierung nicht wieder funktionsfähig waren: Kein `ProcessReady()` zuvor aufgerufener Spielserver-Container Amazon GameLift Servers hat aufgehört zu warten, oft weil ein Container beendet wurde oder nicht gestartet werden konnte. Die Ursache liegt normalerweise im Container-Image oder im Spieleserver. Finde heraus, warum der Container beendet wurde oder warum der Spieleserver nie als bereit gemeldet wurde.

### Überprüfe das Flottenereignisprotokoll
<a name="containers-deployment-validation-debug-events"></a>

Das Flottenereignisprotokoll zeichnet auf, was während des Einsatzes Amazon GameLift Servers beobachtet wurde. Sehen Sie es sich in der Konsole auf der Registerkarte **Ereignisse** der Flotte an oder rufen Sie an [describe-fleet-events](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-events.html). Die folgenden Ereigniscodes sind für eine fehlgeschlagene Bereitstellung relevant:
+ `GAME_SERVER_CONTAINER_GROUP_CRASHED`und `PER_INSTANCE_CONTAINER_GROUP_CRASHED` — eine Container-Gruppe wurde beendet oder konnte nicht gestartet werden. Wenn Amazon GameLift Servers der Exit-Code des Containers vorhanden ist, nimmt er den Code in die Ereignisnachricht auf.
+ `GAME_SERVER_CONTAINER_GROUP_REPLACED_UNHEALTHY`und `INSTANCE_REPLACED_UNHEALTHY` — hat eine Containergruppe oder eine Instance Amazon GameLift Servers ersetzt, die nicht mehr funktionsfähig ist. Diese können sich an allen Standorten der Flotte wiederholen, während eine Bereitstellung fehlschlägt.
+ `SERVER_PROCESS_MISCONFIGURED_CONTAINER_PORT`— Ein Spieleserver-Container hat einen Port verwendet, der nicht mit den in der Container-Gruppendefinition deklarierten Ports übereinstimmt.
+ `LOCATION_STATE_UPDATING`und `LOCATION_STATE_ACTIVE` — diese gruppieren den Einsatz an jedem Standort, was dir hilft, andere Ereignisse mit dem Einsatz, der sie hervorgebracht hat, in Einklang zu bringen.
+ `COMPUTE_LOG_UPLOAD_FAILED`— Die Protokollerfassung für einen Container funktioniert nicht mehr, sodass die Protokolle aus diesem Container möglicherweise unvollständig sind oder fehlen.

### Lesen Sie die Container-Logs
<a name="containers-deployment-validation-debug-logs"></a>

Eine Containerflotte `LogConfiguration` legt fest, wohin die Standardausgabe jedes Containers Amazon GameLift Servers gesendet wird: `CLOUDWATCH` (Standard),`S3`, oder`NONE`. Behalten Sie die Einstellung auf `CLOUDWATCH` oder bei, `S3` sodass die Container-Ausgabe verfügbar ist, wenn eine Bereitstellung fehlschlägt. Wenn ein Container ausfällt, bevor dein Spieleserver gestartet wird, beispielsweise weil der Einstiegspunkt des Containers auf eine Datei verweist, die nicht im Bild enthalten ist, ist diese Ausgabe die einzige Aufzeichnung des Fehlers. Hinweise zur Container-Protokollierung finden Sie unter[Unterschiede protokollieren: Verwaltete Flotten EC2 und Containerflotten](logging-server-messages-ec2-vs-containers.md).

### Stellen Sie eine Connect zu einem defekten Container her
<a name="containers-deployment-validation-debug-connect"></a>

Wenn Sie die `MAINTAIN` Impairment-Strategie verwendet haben, können Sie eine Verbindung zu einem Container herstellen, in dem der Container Amazon GameLift Servers aufbewahrt wurde, und ihn direkt überprüfen. Verwende diese Option, um die Dateiberechtigungen zu überprüfen, zu überprüfen, welche Dateien das Bild tatsächlich enthält, und die ausführbare Datei des Spielservers manuell auszuführen, um zu sehen, was sie meldet. Anweisungen zum Herstellen einer Verbindung zu einem Container finden Sie unter[Connect zu Containern herstellen](containers-remote-access.md).

### Häufige Probleme bei der Bereitstellung
<a name="containers-deployment-validation-debug-causes"></a>

Die folgenden Symptome treten zusammen mit ihren üblichen Ursachen häufig bei fehlgeschlagenen oder langsamen Bereitstellungen auf.

**Der Container wird sofort gestartet und wieder beendet.**  
Wenn der Einstiegspunkt des Containers nicht ausgeführt werden kann, überprüfen Sie Folgendes:  
+ Vergewissere dich, dass das Startskript und die ausführbare Datei des Spielservers im Image als ausführbar markiert sind.
+ Vergewissern Sie sich, dass die CPU-Architektur der ausführbaren Datei dem Instance-Typ der Flotte entspricht.
+ Vergewissern Sie sich, dass das Image den Interpreter und die gemeinsam genutzten Bibliotheken enthält, die die ausführbare Datei benötigt.
Hinweise zum Erstellen eines Images, das ausgeführt Amazon GameLift Servers werden kann, finden Sie unter[Erstellen Sie ein Container-Image für GameLift Amazon-Server](containers-prepare-images.md).

**Die Bereitstellung ist langsam, aber nichts schlägt fehl.**  
Ein `WITH_PROTECTION` Einsatz wartet auf das Ende der geschützten Spielsitzungen, sowohl während der Validierung als auch beim Austausch der Container der Flotte. Überprüfe die aktiven Spielsitzungen der Flotte, bevor du einen längeren Einsatz als Fehlschlag einstufst. Informationen zu den Wartezeiten bei der Validierung finden Sie unter[Wie lange dauert die Validierung](#containers-deployment-validation-timeouts).

## Brechen Sie eine Bereitstellung ab, indem Sie eine neue starten
<a name="containers-deployment-validation-cancel"></a>

Um eine Bereitstellung abzubrechen und die Flotte auf die vorherige Konfiguration zurückzusetzen, rufen Sie die Flotte in der Konsole auf `UpdateContainerFleet` oder bearbeiten Sie sie, um eine neue Bereitstellung zu starten, bei der die Änderungen rückgängig gemacht werden. Der häufigste Fall ist eine neue Version der Containergruppen-Definition, die mit dem folgenden Verfahren rückgängig gemacht wird. Amazon GameLift Serverszeichnet die Versionen auf, die die Flotte verwendet hat, als sie das letzte Mal bei der Bereitstellung aktiv war`RollbackPerInstanceBinaryArn`, als `RollbackGameServerBinaryArn` und, sodass Sie nicht herausfinden müssen, zu welcher Version Sie zurückkehren müssen. Wenn bei der Bereitstellung auch andere Einstellungen geändert wurden, z. B. die Protokollkonfiguration oder der Verbindungsportbereich, setzen Sie diese in derselben `UpdateContainerFleet` Anfrage wieder zurück.

Bevor Sie beginnen, konfigurieren Sie das AWS CLI für Ihr Konto und identifizieren Sie den Standort der Flotte AWS-Region. Für dieses Verfahren ist eine Bereitstellung in Bearbeitung und für die Wiederherstellung eine frühere Version der Container-Gruppendefinition erforderlich. Wird verwendet`list-fleet-deployments`, um die Bereitstellungs-ID zu finden. Detaillierte Anweisungen finden Sie unter [Verfolgen Sie den Bereitstellungsstatus](#containers-deployment-validation-status).

Ersetzen Sie die Befehle {{fleet-id}} durch Ihre Flotten-ID, {{deployment-id}} durch die ID für den Einsatz in Bearbeitung und {{fleet-home-region}} durch die AWS-Region Heimatadresse der Flotte.

**Um eine in Bearbeitung befindliche Bereitstellung durch eine frühere Containerversion zu ersetzen (AWS CLI)**

1. Verwenden Sie den folgenden AWS CLI Befehl, um die Version abzurufen, zu der Sie zurückkehren möchten:

   ```
   aws gamelift describe-fleet-deployment \
       --fleet-id {{fleet-id}} \
       --deployment-id {{deployment-id}} \
       --region {{fleet-home-region}}
   ```

   `RollbackGameServerBinaryArn`Enthält in der Antwort die Version der Spielserver-Containergruppen-Definition, die die Flotte verwendet hat, als sie zuletzt aktiv war. Wenn die Flotte über eine Containergruppe pro Instanz verfügt, `RollbackPerInstanceBinaryArn` enthält sie diese Version.

1. Verwenden Sie den folgenden AWS CLI Befehl, um eine neue Bereitstellung mit dieser Version zu starten. {{rollback-game-server-cgd-arn}}Ersetzen Sie ihn durch den `RollbackGameServerBinaryArn` Wert aus Schritt 1. Wenn die Flotte über eine Containergruppe pro Instanz verfügt, geben Sie auch `--per-instance-container-group-definition-name` den `RollbackPerInstanceBinaryArn` Wert an.

   ```
   aws gamelift update-container-fleet \
       --fleet-id {{fleet-id}} \
       --game-server-container-group-definition-name {{rollback-game-server-cgd-arn}} \
       --region {{fleet-home-region}}
   ```

1. Vergewissern Sie sich, dass die frühere Bereitstellung `CANCELLED` den Status meldet und dass die neue Bereitstellung meldet, `COMPLETE` wenn sie abgeschlossen ist.

**Anmerkung**  
Das Stornieren einer Bereitstellung auf diese Weise ist kein sofortiger Stopp. Der neue Einsatz durchläuft dieselben Schritte wie jeder andere Einsatz, einschließlich der Validierung, sodass es einige Zeit dauert, bis die Flotte fertig ist. Eine Version, die die Flotte zuvor erfolgreich ausgeführt hat, lässt sich in der Regel schnell validieren.

## Verwandte Themen
<a name="containers-deployment-validation-related"></a>

Weitere Informationen finden Sie unter den folgenden Themen.
+ [Aktualisiere ein GameLift Amazon-Server verwaltete Containerflotte](containers-update-fleet.md)
+ [Connect zu Containern herstellen](containers-remote-access.md)
+ [Erstellen Sie ein Container-Image für GameLift Amazon-Server](containers-prepare-images.md)
+ [Unterschiede protokollieren: Verwaltete Flotten EC2 und Containerflotten](logging-server-messages-ec2-vs-containers.md)
+ [Überwachen GameLift Amazon-Server mit Amazon CloudWatch](monitoring-cloudwatch.md)
+ [So funktionieren Container in GameLift Amazon-Server](containers-howitworks.md)