Containergruppendefinitionen für eine GameLift Amazon-Containerflotte erstellen - Amazon GameLift

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.

Containergruppendefinitionen für eine GameLift Amazon-Containerflotte erstellen

Diese Dokumentation bezieht sich auf eine Funktion, die in der öffentlichen Vorschauversion enthalten ist. Änderungen sind vorbehalten.

Eine Container-Gruppendefinition beschreibt, wie Sie Ihre containerisierten Gameserver-Anwendungen in einer Containerflotte bereitstellen. Es ist ein Blueprint, der die Gruppe von Containern identifiziert, die auf der Flotte ausgeführt werden sollen, und wie sie ausgeführt werden. Wenn Sie eine Containerflotte erstellen, geben Sie die Containergruppendefinitionen an, die für die Flotte bereitgestellt werden sollen. Weitere Informationen zu Containergruppen finden Sie unterKomponenten der Containerflotte.

Bevor Sie beginnen

Führen Sie die folgenden Schritte aus:

  • Entwerfen Sie eine Container-Architektur für das Hosten Ihrer Spieleserver. Siehe Entwerfen Sie eine GameLift Amazon-Containerflotte.

  • Planen Sie die Containerdefinitionen, die in die Containergruppe aufgenommen werden sollen. Wenn Sie die AWS CLI verwenden, erstellen Sie Ihre Container-Definition in einer JSON-Datei.

  • Übertragen Sie die endgültigen Container-Images in eine Amazon Elastic Container Registry (Amazon ECR) -Registry in derselben Region, AWS-Region in der Sie die Container-Gruppe erstellen möchten. Amazon GameLift speichert zu dem Zeitpunkt, zu dem Sie die Container-Gruppendefinition erstellen, einen Snapshot jedes Images und verwendet die Kopie bei der Bereitstellung in einer Containerflotte. Siehe Bereite ein Container-Image mit deiner Gameserver-Software vor.

  • Stellen Sie sicher, dass Ihr AWS Benutzer über IAM-Berechtigungen für den Zugriff auf das Amazon ECR-Repository verfügt. Siehe Benutzerberechtigungen für Amazon verwalten GameLift. Sie benötigen mindestens Berechtigungen für die folgenden Aktionen:

    • ecr:DescribeImages

    • ecr:BatchGetImage

    • ecr:GetDownloadUrlForLayer

Klonen Sie eine Container-Gruppendefinition

Sie können die GameLift Amazon-Konsole verwenden, um eine bestehende Container-Gruppendefinition zu klonen.

Um eine Container-Gruppe zu klonen
  1. Gehen Sie in der GameLift Amazon-Konsole zum linken Navigationsbereich und wählen Sie Containergruppen aus.

  2. Wählen Sie auf der Listenseite der Containergruppen die bestehende Container-Gruppe aus, die Sie klonen möchten. Nachdem Sie eine Container-Gruppe ausgewählt haben, ist die Schaltfläche Klonen aktiv.

  3. Klicken auf Clone. Diese Aktion öffnet den Assistenten zum Erstellen von Containergruppen mit vordefinierten Einstellungen.

  4. Geben Sie einen neuen Namen für die geklonte Containergruppe ein. Die Containergruppe in derselben Region muss eindeutige Namen haben.

  5. Gehen Sie die Seiten mit der Containergruppe und der Container-Definition durch, überprüfen Sie die neue Container-Gruppe und erstellen Sie sie.

Erstellen Sie eine Replikat-Container-Gruppendefinition

Eine Replikat-Container-Gruppe verwaltet Ihre Spieleserver-Software. Eine Replikat-Container-Gruppe hat mindestens einen Container, auf dem der Amazon GameLift Agent und Ihre Spieleserver-Prozesse ausgeführt werden. Die Gruppe verfügt möglicherweise über zusätzliche „Sidecar“ -Container, um unterstützende Software auszuführen.

In diesem Thema wird beschrieben, wie Sie mit der GameLift Amazon-Konsole oder den AWS CLI-Tools eine Container-Gruppendefinition erstellen. Ausführlichere Informationen zum Einrichten von Container-Gruppenkonfigurationen finden Sie unterEntwerfen Sie eine GameLift Amazon-Containerflotte.

Console

Wählen Sie in der GameLift Amazon-Konsole den AWS-Region Ort aus, an dem Sie die Container-Gruppe erstellen möchten.

Öffnen Sie die linke Navigationsleiste der Konsole und wählen Sie Container-Gruppen. Wählen Sie auf der Seite Container-Gruppen die Option Container-Gruppe erstellen aus.

Schritt 1: Definieren Sie Gruppendetails.
  1. Geben Sie einen Definitionsnamen für eine Containergruppe ein. Dieser Name muss für die Region AWS-Konto und eindeutig sein. In der Konsole werden Gruppendefinitionen nach Namen aufgelistet, sodass es hilfreich sein kann, aussagekräftige Bezeichnungen zuzuweisen.

  2. Wählen Sie die Strategie zur Planung von Replikaten aus.

  3. Geben Sie unter Gesamtspeicherlimit den maximalen Arbeitsspeicher ein, der der Containergruppe zur Verfügung steht. Hilfe zur Berechnung dieses Werts finden Sie unterLegen Sie Ressourcenlimits fest.

  4. Geben Sie unter Gesamt-CPU-Limit die maximale Rechenleistung ein, die der Containergruppe zur Verfügung steht. Hilfe zur Berechnung dieses Werts finden Sie unterLegen Sie Ressourcenlimits fest.

Schritt 2: Fügen Sie Containerdefinitionen hinzu.

Definiere den Container mit deiner Gameserver-Anwendung und dem Amazon GameLift Agent. Dies ist Ihr unverzichtbarer Replikat-Container.

  1. Geben Sie einen Namen für die Containerdefinition an. Jeder für die Gruppe definierte Container muss einen eindeutigen Namenswert haben.

  2. Identifizieren Sie den Amazon ECR-Image-URI des Container-Images. Geben Sie eines der folgenden Formate ein:

    • Nur Bild-URI: [AWS-Konto].dkr.ecr.[AWS-Region].amazonaws.com/[repository ID]

    • Bild-URI + Digest: [AWS-Konto].dkr.ecr.[AWS-Region].amazonaws.com/[repository ID]@[digest]

    • Bild-URI + Tag: [AWS-Konto].dkr.ecr.[AWS-Region].amazonaws.com/[repository ID]:[tag]

  3. Für Essential-Container wird Yes automatisch für die erste Container-Definition ausgewählt. Wenn Sie eine weitere Containerdefinition hinzufügen, können Sie diese Einstellung für jede Definition ein- oder ausschalten. Weitere Details finden Sie unter Benennen Sie wichtige Container.

  4. Legen Sie einen oder mehrere interne Container-Portbereiche fest. Dieser Container hostet deine Spieleserver. Definieren Sie also einen Bereich mit genügend Ports, damit jeder Serverprozess in der Containergruppe ausgeführt werden kann. Weitere Details finden Sie unter Netzwerkverbindungen konfigurieren.

  5. Mit den optionalen Einstellungen Overrides und Environment variables kannst du Werte angeben, die beim Start an den Container übergeben werden. Die Werte, die Sie hier festlegen, haben Vorrang vor allen Einstellungen, die sich bereits im Container-Image befinden.

  6. Legen Sie optionale Container-Limits fest, um die Ressourcenzuweisung für diesen Container zu verwalten. Weitere Details finden Sie unter Legen Sie Ressourcenlimits fest.

  7. Definieren Sie nach Bedarf zusätzliche Container, die nicht unbedingt erforderlich sind:

    • Geben Sie einen Namen für die Container-Definition und einen ECR-Image-URI an. Container, die nicht unbedingt benötigt werden, dürfen den Amazon GameLift Agent nicht ausführen.

    • Legen Sie nur dann einen internen Container-Port-Bereich fest, wenn die Container über Prozesse verfügen, die Netzwerkzugriff benötigen.

    • Richten Sie optional einen Gesundheitscheck für den Container ein. Wenn ein Container, der nicht unbedingt benötigt wird, eine Integritätsprüfung nicht besteht, wird nur der fehlerhafte Container neu gestartet.

    • Legen Sie optional nach Bedarf Überschreibungen, Umgebungsvariablen und Grenzwerte für die Ressourcenzuweisung fest.

Schritt 3: Konfigurieren Sie Abhängigkeiten.

Wenn Ihre Container-Gruppendefinition mehr als einen Container enthält, können Sie Abhängigkeiten zwischen ihnen definieren. Verwenden Sie Abhängigkeiten, um Start- und Shutdown-Sequenzen auf der Grundlage der Container-Bedingungen einzurichten. Weitere Details finden Sie unter Legen Sie Container-Abhängigkeiten fest.

  1. Identifizieren Sie den Container-Namen, für den Sie eine Abhängigkeit hinzufügen möchten. Dieser Container wird erst gestartet, wenn die Abhängigkeitsbedingung erfüllt ist.

  2. Identifizieren Sie den Namen und die Bedingung des Abhängigkeitscontainers. Dieser Container muss die Bedingung erfüllen, bevor der abhängige Container gestartet werden kann.

  3. Legen Sie nach Bedarf zusätzliche Abhängigkeiten fest. Sie können mehrere Abhängigkeiten für jeden Container erstellen. Vermeiden Sie die Schaffung von zirkulären Abhängigkeiten.

Schritt 4: Überprüfen und erstellen.
  1. Überprüfen Sie alle Ihre Definitionseinstellungen für Containergruppen. Sie können die Konfiguration einer Container-Gruppendefinition nicht ändern, nachdem sie erstellt wurde. Verwenden Sie Bearbeiten, um Änderungen an einem beliebigen Abschnitt vorzunehmen, einschließlich jeder Ihrer Containerdefinitionen für die Gruppe.

  2. Wenn Sie mit der Überprüfung fertig sind, wählen Sie Erstellen.

    Wenn Ihre Anfrage erfolgreich ist, zeigt die Konsole die Detailseite für die neue Container-Gruppen-Definitionsressource an. Anfänglich lautet der StatusCOPYING, da Amazon GameLift damit beginnt, Schnappschüsse aller Container-Images für die Gruppe zu erstellen. Wenn diese Phase abgeschlossen ist, ändert sich der Status der Container-Gruppendefinition inREADY. Eine Containergruppendefinition muss den READY Status haben, bevor Sie damit eine Containerflotte erstellen können.

AWS CLI

Wenn Sie die AWS CLI verwenden, um eine Container-Gruppendefinition zu erstellen, verwalten Sie Ihre Container-Definitionskonfigurationen in einer separaten JSON Datei. Sie können in Ihrem CLI-Befehl auf die Datei verweisen. Schemabeispiele finden Sie unterErstellen Sie eine JSON Container-Definitionsdatei.

Erstellen Sie eine Container-Gruppendefinition

Verwenden Sie den create-container-group-definition CLI-Befehl, um eine neue Container-Gruppendefinition zu erstellen. Weitere Informationen zu diesem Befehl finden Sie create-container-group-definitionin der AWS CLI-Befehlsreferenz.

Beispiel : Containergruppe replizieren

Dieses Beispiel veranschaulicht eine Anforderung für eine Replikat-Container-Gruppendefinition. Die Befehlsstruktur für die Erstellung von Replikat- und Daemon-Gruppendefinitionen ist im Wesentlichen identisch. Spezifische Details für jeden Gruppentyp sind in den einzelnen Containerdefinitionen beschrieben.

In diesem Beispiel wird davon ausgegangen, dass Sie eine JSON-Datei mit den Containerdefinitionen für diese Gruppe erstellt haben.

aws gamelift create-container-group-definition \ --name MyAdventureGameContainerGroup \ --operating-system AMAZON_LINUX_2023 \ --scheduling-strategy REPLICA \ --total-memory-limit 4096 \ --total-cpu-limit 1024 \ --container-definitions file://SimpleServer.json

Erstellen Sie eine JSON Container-Definitionsdatei

Wenn Sie eine Container-Gruppendefinition erstellen, definieren Sie auch die Container für die Gruppe. Eine Container-Definition spezifiziert das Amazon ECR-Repository, in dem das Container-Image gespeichert ist, sowie optionale Konfigurationen für Netzwerkports, Grenzwerte für die CPU- und Speicherauslastung und andere Einstellungen. Wir empfehlen, eine einzige JSON Datei mit den Konfigurationen für alle Container in einer Containergruppe zu erstellen. Die Pflege einer Datei ist nützlich, um diese kritischen Konfigurationen zu speichern, gemeinsam zu nutzen und Versionen nachzuverfolgen. Wenn Sie die AWS CLI verwenden, um Ihre Container-Gruppendefinitionen zu erstellen, können Sie im Befehl auf die Datei verweisen.

Um eine Container-Definition zu erstellen
  1. Erstellen und öffnen Sie eine neue .JSON Datei. Beispielsweise:

    [~/work/glc]$ vim SimpleServer.json
  2. Erstellen Sie für jeden Container der Gruppe eine separate Containerdefinition. Kopieren Sie den folgenden Beispielinhalt und ändern Sie ihn nach Bedarf für Ihre Container. Einzelheiten zur Syntax einer Container-Definition finden Sie ContainerDefinitionInputin der Amazon GameLift API-Referenz.

  3. Speichern Sie die Datei lokal, damit Sie in einem AWS CLI-Befehl darauf verweisen können.

In diesem Beispiel wird der grundlegende Container für Ihre Replikat-Container-Gruppe beschrieben. Der unverzichtbare Replikatcontainer enthält Ihre Gameserver-Anwendung, den Amazon GameLift Agent, und kann auch andere unterstützende Software für Ihr Spiele-Hosting enthalten. Die Definition muss einen Namen, eine Image-URI und eine Portkonfiguration enthalten. In diesem Beispiel werden auch einige containerspezifische Ressourcenlimits festgelegt.

[ { "ContainerName": "SimpleServer", "ImageUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/gl-containers:complex-server", "Essential": true, "Cpu": 256, "MemoryLimits": { "HardLimit": 128 }, "PortConfiguration": { "ContainerPortRanges": [ { "FromPort": 2000, "Protocol": "TCP", "ToPort": 2100 } ] } } ]