View a markdown version of this page

Verwenden Sie Amazon EC2-Startvorlagen mit AWS Batch - AWS Batch

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.

Verwenden Sie Amazon EC2-Startvorlagen mit AWS Batch

AWS Batch unterstützt die Verwendung von Amazon EC2-Startvorlagen in Ihren EC2-Rechenumgebungen. Mit Startvorlagen können Sie die Standardkonfiguration Ihrer AWS Batch Rechenressourcen ändern, ohne benutzerdefinierte AMIs erstellen zu müssen.

In Startvorlagen können AMIs angegeben werden, die in der AMI-Auswahlreihenfolge Vorrang haben. Weitere Informationen finden Sie unter AMI-Auswahlreihenfolge.

Anmerkung

Wenn Sie eine benutzerdefinierte Startvorlage für eine AWS Batch Rechenumgebung angeben, hängt Ihre Startvorlage AWS Batch nicht direkt an die zugrunde liegende Auto Scaling-Gruppe an. AWS Batch Erstellt stattdessen eine separate Batch-managed Startvorlage für die Auto Scaling-Gruppe und integriert die relevanten Einstellungen aus Ihrer benutzerdefinierten Startvorlage in diese. Daher unterscheidet sich die Startvorlage, die Sie der Auto Scaling-Gruppe zugeordnet sehen, von der ursprünglich angegebenen. Dieses Verhalten wird erwartet.

Anmerkung

Startvorlagen werden auf AWS Fargate-Ressourcen nicht unterstützt.

Sie müssen eine Startvorlage erstellen, bevor Sie sie mit einer Datenverarbeitungsumgebung verknüpfen können. Sie können eine Startvorlage in der Amazon EC2-Konsole erstellen. Oder Sie können das AWS CLI oder ein AWS SDK verwenden. Die folgende JSON-Datei stellt beispielsweise eine Startvorlage dar, die die Größe des Docker-Datenvolumens für das AWS Batch Standard-Computerressourcen-AMI ändert und auch festlegt, dass es verschlüsselt wird.

{ "LaunchTemplateName": "increase-container-volume-encrypt", "LaunchTemplateData": { "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "Encrypted": true, "VolumeSize": 100, "VolumeType": "gp2" } } ] } }

Sie können die vorherige Startvorlage erstellen, indem Sie die JSON-Datei in einer Datei speichern, die aufgerufen wird, lt-data.json und den folgenden AWS CLI Befehl ausführen.

aws ec2 --region <region> create-launch-template --cli-input-json file://lt-data.json

Weitere Informationen zu Startvorlagen finden Sie unter Launching an Instance from a Launch Template im Amazon EC2-Benutzerhandbuch.

Wenn Sie eine Startvorlage verwenden, um Ihre Datenverarbeitungsumgebung zu erstellen, können Sie die folgenden vorhandenen Parameter der Datenverarbeitungsumgebung in Ihre Startvorlage verschieben:

Anmerkung

Angenommen, jeder dieser Parameter (mit Ausnahme der Amazon EC2-Tags) ist sowohl in der Startvorlage als auch in der Konfiguration der Rechenumgebung angegeben. Dann haben die Parameter der Rechenumgebung Vorrang. Amazon EC2-Tags werden zwischen der Startvorlage und der Konfiguration der Rechenumgebung zusammengeführt. Wenn der Schlüssel des Tags kollidiert, hat der Wert in der Konfiguration der Rechenumgebung Vorrang.

  • Amazon EC2-Schlüsselpaar

  • Amazon EC2-AMI-ID

  • Sicherheitsgruppen-IDs

  • Amazon EC2-Tags

Die folgenden Parameter der Startvorlage werden ignoriert von AWS Batch:

  • Instance-Typ (Legen Sie beim Erstellen Ihrer Datenverarbeitungsumgebung die gewünschten Instance-Typen fest.)

  • Instance-Rolle (Legen Sie beim Erstellen Ihrer Datenverarbeitungsumgebung die gewünschte Instance-Rolle fest.)

  • Netzwerkschnittstellen-Subnetze (Legen Sie beim Erstellen Ihrer Datenverarbeitungsumgebung die gewünschten Subnetze fest.)

  • Optionen für den Instance-Markt (AWS Batch muss die Spot-Instance-Konfiguration steuern)

  • Deaktivieren Sie die API-Terminierung (AWS Batch muss den Lebenszyklus der Instanz kontrollieren)

AWS Batch aktualisiert die Startvorlage nur bei Infrastrukturupdates mit einer neuen Version der Startvorlage. Weitere Informationen finden Sie unter Aktualisieren Sie eine Rechenumgebung in AWS Batch.

Standardmäßige Startvorlagen und überschreibende Startvorlagen

Sie können eine Standard-Startvorlage für die Rechenumgebung und eine Override-Startvorlage für bestimmte Instance-Typen und -Familien definieren. Dies kann für Sie nützlich sein, damit die Standardvorlage für die meisten Instanztypen in den Rechenumgebungen verwendet wird.

Die Substitutionsvariablen $Default und $Latest können verwendet werden, anstatt eine bestimmte Version zu benennen. Wenn Sie keine Override-Startvorlage angeben, wird automatisch die Standard-Startvorlage angewendet.

Wenn Sie entweder die $Latest Variable $Default oder verwenden, AWS Batch werden die aktuellen Informationen zum Zeitpunkt der Erstellung der Rechenumgebung angewendet. Wenn sich die Standardversion oder die neueste Version in Zukunft ändert, müssen Sie die Informationen über UpdateComputeEnvironment oder über das AWS-Managementkonsole - aktualisieren AWS Batch.

Um zusätzliche Flexibilität zu bieten, können Sie festlegen, dass Override-Startvorlagen auf bestimmte Compute-Instance-Typen oder -Familien angewendet werden.

Anmerkung

Sie können bis zu zehn (10) Override-Startvorlagen pro Rechenumgebung angeben.

Verwenden Sie den targetInstanceTypes Parameter, um den Instance-Typ oder die Instance-Familie auszuwählen, die diese Override-Startvorlage verwenden soll. Der Instanztyp oder die Instanzfamilie muss zuerst durch den instanceTypes Parameter identifiziert werden.

Wenn Sie Überschreibungen für Startvorlagen definieren und beschließen, sie später zu entfernen, können Sie ein leeres Array übergeben, um den overrides Parameter im UpdateComputeEnvironment API-Vorgang aufzuheben. Sie können sich auch dafür entscheiden, den overrides Parameter beim Senden des UpdateComputeEnvironment API-Vorgangs nicht einzubeziehen. Weitere Informationen finden Sie unter LaunchTemplateSpecification.overrides

Weitere Informationen finden Sie LaunchTemplateSpecificationOverride.targetInstanceTypes im AWS Batch API-Referenzhandbuch.

Amazon EC2-Benutzerdaten in Startvorlagen

Sie können Amazon EC2-Benutzerdaten in Ihrer Startvorlage angeben, die beim Start Ihrer Instances von Cloud-Init ausgeführt wird. Ihre Benutzerdaten können gängige Konfigurationsszenarien ausführen, einschließlich, aber nicht beschränkt auf die folgenden:

Amazon EC2-Benutzerdaten in Startvorlagen müssen im mehrteiligen https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive MIME-Archivformat vorliegen. Das liegt daran, dass Ihre Benutzerdaten mit anderen AWS Batch Benutzerdaten zusammengeführt werden, die für die Konfiguration Ihrer Rechenressourcen erforderlich sind. Sie können mehrere Benutzerdatenblöcke in einer einzelnen mehrteiligen MIME-Datei kombinieren. Beispielsweise möchten Sie vielleicht einen Cloud-Boothook, der den Docker-Daemon konfiguriert, mit einem Benutzerdaten-Shell-Skript kombinieren, das Konfigurationsinformationen für den Amazon ECS-Container-Agenten schreibt.

Wenn Sie ihn verwenden AWS CloudFormation, kann der Typ AWS::CloudFormation: :Init zusammen mit dem https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html cfn-init-Helfer-Skript verwendet werden, um allgemeine Konfigurationsszenarien durchzuführen.

Eine mehrteilige MIME-Datei umfasst folgende Komponenten:

  • Deklaration von Inhaltstyp und Teilgrenze: Content-Type: multipart/mixed; boundary="==BOUNDARY=="

  • Deklaration der MIME-Version: MIME-Version: 1.0

  • Ein oder mehrere Benutzerdatenblöcke, die die folgenden Komponenten enthalten:

    • Die Öffnungsgrenze, die den Beginn eines Benutzerdatenblocks signalisiert:--==BOUNDARY==. Sie müssen die Linie vor dieser Grenze leer lassen.

    • Die Inhaltstypdeklaration für den Block: Content-Type: text/cloud-config; charset="us-ascii". Weitere Informationen zu Inhaltstypen finden Sie in der Cloud-Init Dokumentation. Sie müssen die Zeile nach der Inhaltstypdeklaration leer lassen.

    • Der Inhalt der Benutzerdaten, z. B. eine Liste von Shell-Befehlen oder cloud-init -Direktiven.

  • Die schließende Grenze, die das Ende der mehrteiligen MIME-Datei signalisiert:--==BOUNDARY==--. Sie müssen die Zeile vor der schließenden Grenze leer lassen.

Anmerkung

Wenn Sie Benutzerdaten zu einer Startvorlage in der Amazon EC2-Konsole hinzufügen, können Sie sie als Klartext einfügen. Sie können es auch aus einer Datei hochladen. Wenn Sie das AWS CLI oder ein AWS SDK verwenden, müssen Sie zuerst die Benutzerdaten base64 kodieren und diese Zeichenfolge beim Aufruf als Wert des UserData Parameters einreichen CreateLaunchTemplate, wie in dieser JSON-Datei gezeigt.

{ "LaunchTemplateName": "base64-user-data", "LaunchTemplateData": { "UserData": "ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW..." } }

Reservierte Konfigurationswerte für Amazon ECS-Agenten

AWS Batch schreibt spezifische Konfigurationswerte für Amazon ECS-Agenten, /etc/ecs/ecs.config wenn Instances in EC2-based verwalteten Rechenumgebungen gestartet werden, die Amazon ECS verwenden. AWS Batch überschreibt diese Werte möglicherweise auch bei Aktualisierungen der Computerumgebung, sodass Ihre Änderungen möglicherweise nicht bestehen bleiben.

Wichtig

Konflikte zwischen Ihren Benutzerdaten und den AWS Batch verwalteten Werten können die Planung von Aufträgen verhindern, zu unerwartetem Skalierungsverhalten führen und zu unerwarteten Kosten führen.

Wichtig

Kopieren Sie keine Benutzerdaten aus einer von AWS Batch-verwalteten Startvorlage in Ihre eigene Startvorlage. AWS Batch-verwaltete Benutzerdaten enthalten Werte, die sich je nach Computerumgebung unterscheiden und sich ändern, wenn die Computerumgebung aktualisiert wird. Wenn Ihre Startvorlage kopierte Werte enthält, können diese mit den erwarteten Werten für die aktuelle Computerumgebung in Konflikt geraten.

Legen Sie die folgenden Werte nicht in den Benutzerdaten Ihrer Startvorlage fest. Diese Werte werden von verwaltet, AWS Batch und Konflikte können zu Problemen bei der Planung und Skalierung führen:

  • ECS_CLUSTER

  • ECS_INSTANCE_ATTRIBUTES

Weitere Informationen zu den oben aufgeführten Parametern finden Sie unter Amazon ECS-Container-Agent-Konfiguration im Amazon Elastic Container Service Developer Guide.