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.
Konfigurieren Sie Node-Lifecycle-Aktionen in AWS STCK
Sie definieren Aktionen für den Knotenlebenszyklus in Ihrer Compute-Knotengruppenkonfiguration. In diesem Thema wird beschrieben, wie Sie ein Skript definieren, steuern, ob es beim Neustart erneut ausgeführt wird, es speichern, Argumente übergeben, Fehler behandeln, es zwischenspeichern, seine Integrität überprüfen und seine Protokolle lesen.
Anforderung an die Agentenversion
Für Aktionen im Knotenlebenszyklus ist die AWS PCS-Agent-Version 1.5.0-1 oder höher erforderlich. Wenn Ihre Rechenknoten ein benutzerdefiniertes AMI mit einer älteren Agentenversion verwenden, aktualisieren Sie den Agenten, bevor Sie Lebenszyklusaktionen konfigurieren. Weitere Informationen finden Sie unter AWS PCS-Agent-Versionen.
Wie definiert man ein Skript
Jedes Skript hat einename, einescriptSource, optionalearguments, eine onError Richtlinie und eineexecutionPolicy. Die Felder Standort und Integrität sind unter gruppiertscriptSource.
{ "name": "My script", "scriptSource": { "scriptLocation": "s3://my-bucket/my-script.sh", "s3VersionId": "optional, S3 only", "checksum": "optional 64-char SHA-256 hex" }, "arguments": ["arg1", "arg2"], "onError": "TERMINATE", "executionPolicy": "FIRST_BOOT_ONLY" }
Fügen Sie einer Compute-Knotengruppe Lebenszyklus-Aktionen hinzu
Sie können Lebenszyklusaktionen hinzufügen, wenn Sie eine Compute-Knotengruppe erstellen oder aktualisieren. Verwenden Sie das AWS-Managementkonsole oder das AWS CLI.
Steuern des Neustartverhaltens
Wird executionPolicy pro Skript festgelegt, um zu steuern, ob es beim Neustart erneut ausgeführt wird.
Wert |
Behavior |
Wann sollte dies verwendet werden? |
|---|---|---|
|
Führen Sie das Skript einmal aus, beim ersten Start des Knotens. Überspringen Sie es bei jedem nachfolgenden Neustart. |
One-time Einrichtung, z. B. das Installieren von Paketen, das Beitreten zu einer Domäne oder das Initialisieren des Speichers. Sie müssen diese Skripts nicht idempotent machen. |
|
Führen Sie das Skript beim ersten Start und bei jedem Neustart aus. |
Konfiguration, die nach einem Neustart erneut angewendet werden muss, z. B. beim erneuten Mounten eines kurzlebigen Dateisystems oder bei der Wiederherstellung des Knotenzustands. |
Skripts sind so eingestellt, dass sie einmal FIRST_BOOT_ONLY ausgeführt werden und beim Neustart übersprungen werden. Skripte sind so eingerichtet, dass sie bei jedem Systemstart EVERY_BOOT ausgeführt werden und idempotent sein sollten (es ist sicher, dass sie mehrmals ausgeführt werden und dasselbe Ergebnis haben).
Speicherorte von Skripten
Sie können Skripts in Amazon S3 speichern oder über HTTPS bereitstellen. Skripte können nicht inline über die API hochgeladen werden, und jedes Skript darf nicht größer als 2 MiB sein — der Agent lehnt jedes Skript ab, das diese Größe überschreitet.
-
Amazon S3 (
s3://) — Das Instanz-IAM-Profil mussbucket/keys3:GetObjectauf dem Objekt vorhanden sein. Mit einem S3-Gateway-VPC-Endpunkt können Knoten in privaten Subnetzen Skripts über den VPC-Endpunkt abrufen. Pingen Sie eine bestimmte Version mitscriptSource.s3VersionId(nur S3-Standorte) an. -
HTTPS (
https://) — Der Host muss öffentlich lesbar sein (keine Authentifizierung) und der Knoten benötigt ausgehenden Internetzugang (Internet-Gateway, NAT-Gateway oder HTTP-Proxy). Dies ist nützlich für Skripte, die auf GitHub oder anderen öffentlichen Repositorys gehostet werden.hostname/path
Externer Speicher bietet Versionskontrolle, Überprüfbarkeit und teamübergreifende Wiederverwendung. Inline- oder hochgeladene Skripts werden nicht unterstützt.
Übergabe von Argumenten an Skripts
Übergeben Sie Argumente als geordnetes Array. Sie erreichen Ihr Skript als positionale Befehlszeilenparameter.
arguments: ["fs-12345678", "/shared", "nfs4"] # script.sh fs-12345678 /shared nfs4 ($1=fs-12345678, $2=/shared, $3=nfs4)
Der Agent exportiert Umgebungsvariablen in jedes Skript. Diese Variablen enthalten Cluster- und Knotenmetadaten.
Variable |
Beschreibung |
|---|---|
|
Cluster-ID//Name |
|
Gruppenkennung des Knotens berechnen//Name |
|
Knoten-ID |
|
|
#!/usr/bin/env bash echo "Configuring node $PCS_NODE_ID in cluster $PCS_CLUSTER_NAME"
Fehlerbehandlung
Jedes Skript hat ein onError Feld, das steuert, was passiert, wenn ein Skript ungleich Null beendet wird oder durch ein Signal beendet wird.
Wert |
Behavior |
Wann sollte dies verwendet werden? |
|---|---|---|
|
Markieren Sie den Knoten als ausgefallen und beenden Sie ihn. |
Kritische Konfiguration (Speichermounts, Active Directory-Join). Verhindert, dass für defekte Knoten bezahlt wird. |
|
Stoppen Sie die verbleibenden Skripts in der Phase; lassen Sie den Knoten laufen. |
Debugging — überprüfen Sie die Instanz nach einem Ausfall. |
|
Protokollieren Sie den Fehler und führen Sie das nächste Skript aus. |
Optionale oder nach besten Kräften ausgeführte Aufgaben. |
Ein Skript schlägt fehl, wenn es ungleich Null beendet wird oder wenn es durch ein Signal beendet wird (z. B.). SIGSEGV Skripts werden nicht erneut versucht. Wenn bei einem Vorgang vorübergehende Fehler auftreten können, fügen Sie dem Skript eine Wiederholungslogik hinzu. Das Abrufen (Herunterladen) des Skripts wird jedoch erneut versucht — bis zu 3 Versuche mit exponentiellem Backoff (maximal etwa 17 Sekunden) — bevor das Verhalten eintritt. onError
Zwischenspeichern und Aktualisierungen von Skripten
Der Agent lädt jedes Skript beim ersten Start auf die Instanz herunter und speichert es lokal. Zwei Felder steuern das Verhalten beim Neustart: scriptCachingPolicy steuert den erneuten Download und executionPolicy steuert die erneute Ausführung.
-
CACHE_ONCE(Standard) — Beim ersten Start einmal herunterladen; niemals erneut abrufen. Das Verhalten ist bei allen Neustarts identisch. Für die Aktualisierung des Skriptinhalts ist ein Austausch der Instanz erforderlich. -
REFRESH_ON_REBOOT— Re-download Bei jedem Neustart wird der Cache überschrieben. Auf diese Weise können Sie Skriptkorrekturen durch einen Neustart versenden. Es erfordert Netzwerkzugriff bei jedem Start. Schlägt eine Aktualisierung fehl, wird der Download als Fehler beim Abrufen behandelt und dasonErrorVerhalten des Skripts wird übernommen (es gibt kein Fallback auf die zwischengespeicherte Kopie). Ein aktualisiertes Skript wird nur dann beim Neustart erneut ausgeführt, wenn dies der Fall ist.executionPolicyEVERY_BOOT
Die Lebenszykluskonfiguration (welche Skripte ausgeführt werden, ihre Argumente, Fehlerbehandlung und Ausführungsrichtlinie) ist für jede Instanz immer unveränderlich. Eine Änderung UpdateComputeNodeGroup wirkt sich nur auf neue Instanzen aus und löst die DRAIN Strategie aus, sodass laufende Jobs beendet werden, bevor die Knoten ersetzt werden.
Integrität des Skripts (Prüfsummen)
Geben Sie optional eine SHA-256 checksum in einem Skript als scriptSource 64-stellige Hexadezimalzeichenfolge an. Der Agent überprüft es beim Herunterladen; eine Nichtübereinstimmung wird als Download-Fehler behandelt und ausgelöst. onError Wir empfehlen eine Prüfsumme für die Produktion, insbesondere für Skripte aus gemeinsam genutzten oder externen Quellen.
sha256sum mount-efs.sh # use the 64-char hex hash as the checksum value
Loggen und Debuggen
Jedes Skript schreibt in seine eigene Protokolldatei, und der Agent führt sein eigenes Betriebsprotokoll.
# agent: download, caching, checksum, orchestration /var/log/amazon/pcs/lifecycle/actions/executor.log # each script's stdout/stderr /var/log/amazon/pcs/lifecycle/actions/<stage>/<script-name>.log
Der Protokolldateiname verwendet den Skriptnamen, den Sie definiert haben. Leerzeichen werden beibehalten. Beispielsweise Mount EFS home directory schreibt ein Skript mit dem Namen Writes toMount EFS home
directory.log. Stellen Sie eine Verbindung mit SSH oder AWS Systems Manager Session Manager her, um sie zu lesen — beide sind nodeBootstrapped stufenweise verfügbar. Da Knoten, bei denen ein Fehler auftritt, ersetzt TERMINATE werden, leiten Sie die Protokolle nach der Beendigung zum Debuggen an andere Instanzen weiter: Fügen Sie ein Node-Bootstrap-Skript hinzu, das den CloudWatch Amazon-Agenten so konfiguriert, dass er das Lifecycle-Log-Verzeichnis an Amazon Logs sendet. CloudWatch Das AWS-maintened-Skript erledigt dies. configure-cloudwatch-logs.sh Weitere Informationen finden Sie unter Verwenden Sie AWS-gepflegte Skripte für Node-Lifecycle-Aktionen in AWS STCK.