Verwenden Sie Sitzungsskripte, um das Streaming-Erlebnis Ihrer AppStream 2.0-Benutzer zu verwalten - Amazon AppStream 2.0

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 Sitzungsskripte, um das Streaming-Erlebnis Ihrer AppStream 2.0-Benutzer zu verwalten

AppStream 2.0 stellt Sitzungsskripts auf der Instance bereit. Sie können diese Skripte verwenden, um benutzerdefinierte Skripte auszuführen, wenn in den Streaming-Sitzungen der Benutzer bestimmte Ereignisse auftreten. Sie können beispielsweise benutzerdefinierte Skripte verwenden, um Ihre AppStream 2.0-Umgebung vorzubereiten, bevor die Streaming-Sitzungen Ihrer Benutzer beginnen. Sie können benutzerdefinierte Skripte auch einsetzen, um Streaming-Instances zu bereinigen, nachdem die Benutzer ihre Streaming-Sitzungen beendet haben.

Sitzungsskripts werden in einem AppStream 2.0-Image angegeben. Diese Skripte werden im Benutzer- oder Systemkontext ausgeführt. Wenn die Sitzungsskripts den Standardausgang verwenden, um Informationen, Fehler- oder Debugging-Meldungen zu schreiben, können diese optional in einem Amazon-S3-Bucket im Amazon-Web-Services-Konto gespeichert werden.

Ausführen von Skripten vor dem Beginn von Streaming-Sitzungen

Sie können die Skripte so konfigurieren, dass sie maximal 60 Sekunden vor dem Start der Anwendungen der Benutzer und dem Beginn der Streaming-Sitzungen ausgeführt werden. Auf diese Weise können Sie die AppStream 2.0-Umgebung anpassen, bevor Benutzer mit dem Streamen ihrer Anwendungen beginnen. Wenn die Sitzungsskripte ausgeführt werden, wird den Benutzern ein Ladekreisel anzeigt. Nach erfolgreicher Ausführung der Skripte oder nach Ablauf der maximalen Wartezeit beginnen die Streaming-Sitzungen der Benutzer. Können die Skripts nicht abgeschlossen werden, wird den Benutzern eine Fehlermeldung angezeigt. Die Benutzer werden jedoch nicht daran gehindert, ihre Streaming-Sitzung zu nutzen.

Bei der Angabe eines Dateinamens auf einer Windows Instance müssen Sie einen doppelten umgekehrten Schrägstrich verwenden. Beispielsweise:

C:\\Scripts\\Myscript.bat

Wenn Sie keinen doppelten umgekehrten Schrägstrich verwenden, werden Sie in einer Fehlermeldung darauf hingewiesen, dass die JSON-Datei falsch formatiert ist.

Anmerkung

Wenn die Skripte erfolgreich ausgeführt wurden, müssen sie den Wert 0 zurückgeben. Wenn Ihre Skripte einen anderen Wert als 0 zurückgeben, AppStream zeigt der Benutzer die Fehlermeldung an.

Wenn Sie Skripts ausführen, bevor Streaming-Sitzungen beginnen und das Framework für dynamische AppStream 2.0-Anwendungen nicht aktiviert ist, erfolgt der folgende Prozess:

  1. Ihre Benutzer stellen eine Verbindung zu einer AppStream 2.0-Flotten-Instance her, die nicht mit der Domain verbunden ist. Die Verbindung wird unter Verwendung einer der folgenden Zugriffsmethoden hergestellt:

    • AppStream 2.0-Benutzerpool

    • SAML 2.0

    • AppStream 2.0-API

  2. Der Anwendungskatalog wird im AppStream 2.0-Portal angezeigt und Ihre Benutzer wählen eine zu startende Anwendung aus.

  3. Nun erfolgt einer dieser Schritte:

    • Wenn die Persistenz von Anwendungseinstellungen für die Benutzer aktiviert ist, wird die Virtual Hard Disk (VHD)-Datei mit den Anwendungseinstellungen – Anpassungen sowie Windows-Einstellungen für die Benutzer – heruntergeladen und bereitgestellt. In diesem Fall ist eine Windows-Benutzeranmeldung erforderlich.

      Weitere Informationen zur Persistenz von Anwendungseinstellungen siehe Aktivieren der Persistenz von Anwendungseinstellungen für Ihre AppStream-2.0-Benutzer.

    • Wenn die Persistenz von Anwendungseinstellungen nicht aktiviert ist, ist der Windows-Benutzer bereits angemeldet.

  4. Das Sitzungsskript startet. Wenn für die Benutzer persistenter Speicher aktiviert ist, beginnt auch die Bereitstellung des Speicher-Connectors. Informationen zu persistentem Speicher siehe Aktivieren und Verwalten von persistentem Speicher für Ihre AppStream 2.0-Benutzer.

    Anmerkung

    Die Bereitstellung des Speicher-Connectors muss nicht abgeschlossen sein, damit die Streaming-Sitzung startet. Wenn die Sitzungsskripte abgeschlossen werden, bevor die Bereitstellung des Speicher-Connectors abgeschlossen ist, wird die Streaming-Sitzung gestartet.

    Informationen zum Überwachen des Bereitstellungsstatus von Speicher-Connectors siehe Verwenden von Speicher-Connectors mit Sitzungsskripten.

  5. Die Sitzungsskripte werden abgeschlossen oder überschreiten das Zeitlimit.

  6. Die Streaming-Sitzung des Benutzers startet.

  7. Die vom Benutzer gewählte Anwendung startet.

Informationen zum Framework für dynamische AppStream 2.0-Anwendungen finden Sie unter Verwenden des AppStream 2.0 Dynamic Application Framework zum Erstellen eines Anbieters für dynamische Apps.

Wenn Sie Skripts ausführen, bevor Streaming-Sitzungen beginnen und das Framework für dynamische AppStream 2.0-Anwendungen aktiviert ist, erfolgt der folgende Prozess:

  1. Ihre Benutzer besuchen das SAML-2.0-Anwendungsportal für Ihre Organisation und wählen den AppStream 2.0-Stack aus.

  2. Sie stellen eine Verbindung zu einer AppStream 2.0-Flotten-Instance her, die mit der Domain verbunden ist.

  3. Wenn die Persistenz von Anwendungseinstellungen für die Benutzer aktiviert ist, wird die VHD-Datei mit den Anwendungseinstellungen – Anpassungen sowie Windows-Einstellungen für die Benutzer – heruntergeladen und bereitgestellt.

  4. Die Windows-Benutzeranmeldung erfolgt.

  5. Der Anwendungskatalog wird im AppStream 2.0-Portal angezeigt und Ihre Benutzer wählen eine zu startende Anwendung aus.

  6. Das Sitzungsskript startet. Wenn für die Benutzer persistenter Speicher aktiviert ist, beginnt auch die Bereitstellung des Speicher-Connectors.

    Anmerkung

    Die Bereitstellung des Speicher-Connectors muss nicht abgeschlossen sein, damit die Streaming-Sitzung startet. Wenn die Sitzungsskripte abgeschlossen werden, bevor die Bereitstellung des Speicher-Connectors abgeschlossen ist, wird die Streaming-Sitzung gestartet.

    Informationen zum Überwachen des Bereitstellungsstatus von Speicher-Connectors siehe Verwenden von Speicher-Connectors mit Sitzungsskripten.

  7. Die Sitzungsskripte werden abgeschlossen oder überschreiten das Zeitlimit.

  8. Die Streaming-Sitzung des Benutzers startet.

  9. Die vom Benutzer gewählte Anwendung startet.

Ausführen von Skripten nach dem Ende von Streaming-Sitzungen

Sie können Skripte auch so konfigurieren, dass sie nach Beendigung der Streaming-Sitzungen von Benutzern ausgeführt werden. Sie können beispielsweise ein Skript ausführen, wenn Benutzer Sitzung beenden aus der Symbolleiste AppStream 2.0 auswählen oder wenn sie die maximal zulässige Dauer für die Sitzung erreichen. Sie können diese Sitzungsskripts auch verwenden, um Ihre AppStream 2.0-Umgebung zu bereinigen, bevor eine Streaming-Instance beendet wird. Sie können beispielsweise Skripte einsetzen, um Dateisperren aufzuheben oder Protokolldateien hochzuladen. Wenn Sie nach Beendigung von Streaming-Sitzungen Skripte ausführen lassen, geschieht Folgendes:

  1. Die AppStream 2.0-Streaming-Sitzung Ihrer Benutzer endet.

  2. Die Skripte zur Sitzungsbeendigung werden gestartet.

  3. Die Skripte zur Sitzungsbeendigung werden abgeschlossen oder überschreiten das Zeitlimit.

  4. Die Windows-Benutzerabmeldung erfolgt.

  5. Eine der folgenden Operationen wird ausgeführt (bzw. beide gleichzeitig, falls relevant):

    • Wenn die Persistenz von Anwendungseinstellungen für die Benutzer aktiviert ist, wird die Bereitstellung der VHD-Datei mit den Anwendungseinstellungen – Anpassungen sowie Windows-Einstellungen für die Benutzer – aufgehoben und die Datei in einen Amazon-S3-Bucket Ihres Kontos hochgeladen.

    • Wenn für die Benutzer persistenter Speicher aktiviert ist, führt der Speicher-Connector eine abschließende Synchronisierung durch, bevor seine Bereitstellung aufgehoben wird.

  6. Die Flotten-Instance wird beendet.

Erstellen und Angeben von Sitzungsskripten

Sie können Sitzungsskripts für Always-On-, On-Demand- und Elastic-Flotten konfigurieren und angeben.

So konfigurieren und spezifizieren Sie Sitzungsskripts für Always-On- und On-Demand-Flotten
  1. Öffnen Sie die AppStream 2.0-Konsole unter https://console.aws.amazon.com/appstream2.

  2. Wählen Sie im Navigationsbereich Images (Abbilder), Image Builder aus.

  3. Wählen Sie einen Image Builder mit dem Status Running (Wird ausgeführt) und dann Connect (Verbinden) aus.

  4. Wählen Sie nach Aufforderung Administrator.

  5. Navigieren Sie zu C:\AppStream\SessionScripts und öffnen Sie die Konfigurationsdatei config.json.

    Informationen zum Ändern von Sitzungsskriptparametern siehe Sitzungsskript-Konfigurationsdatei.

  6. Speichern und schließen Sie die Datei config.json, nachdem Sie die gewünschten Änderungen vorgenommen haben.

  7. Öffnen Sie auf dem Image-Builder-Desktop den Image Assistant.

  8. (Optional) Geben Sie optional alle anderen Anwendungen an, die in das Abbild eingeschlossen werden sollen.

  9. Führen Sie die erforderlichen Schritte im Image Assistant aus, um Ihr Abbild fertigzustellen.

    Wenn die Konfiguration der Sitzungsskripts nicht validiert werden kann (weil beispielsweise die JSON-Datei nicht richtig formatiert ist), werden Sie benachrichtigt, sobald Sie Verbindung trennen und Abbild erstellen auswählen.

    Anmerkung

    Navigieren Sie zu /opt/appstream/SessionScripts/config.json, um die Konfigurationsdatei für Sitzungsskripts für Linux-basierte Image Builder zu finden.

So konfigurieren und spezifizieren Sie Sitzungsskripts für Elastic-Flotten
  1. Erstellen Sie eine ZIP-Datei mit den Sitzungsskripts und der config.json-Datei. Die Skriptdateien werden an die folgenden Speicherorte kopiert. Sie müssen diese Speicherorte für Ihre config.json-Datei verwenden.

    • Für Windows, verwenden Sie C:\AppStream\SessionScripts\SessionScript.

    • Für Linux, verwenden Sie /opt/appstream/SessionScripts/SessionScript.

    Anmerkung

    Überprüfen Sie zur Ausführung der Sitzungsskriptdateien, dass die Zip-Datei nur die Sitzungsskripts und config.json-Dateien enthält und nicht den enthaltenen Ordner. Weitere Informationen finden Sie unter Sitzungsskript-Konfigurationsdatei.

  2. Laden Sie die Zip-Datei in einen Amazon-S3-Bucket in Ihrem Konto hoch.

    Anmerkung

    Ihre VPC muss den Zugriff auf den Amazon-S3-Bucket ermöglichen. Weitere Informationen finden Sie unter Verwenden von Amazon S3 S3-VPC-Endpunkten für 2.0-Funktionen AppStream .

    Sie müssen Ihren S3-Bucket und Ihre AppStream 2.0-Flotte in derselben haben AWS-Region.

    Sie benötigen IAM-Berechtigungen, um die Aktion S3:GetObject für das Sitzungsskriptobjekt im Amazon-S3-Bucket auszuführen. Weitere Informationen zum Speichern der Sitzungsskripts in einem Amazon-S3-Bucket finden Sie unter Speichern der Anwendungssymbole, Setup-Skripts, Sitzungsskripts und VHDs in einem S3-Bucket.

  3. Öffnen Sie die AppStream 2.0-Konsole unter https://console.aws.amazon.com/appstream2.

  4. Klicken Sie im Navigationsbereich auf Fleets (Flotten).

  5. Wählen Sie eine Elastic-Flotte aus, die Sie aktualisieren möchten, und klicken Sie dann auf Details anzeigen.

  6. Wählen Sie auf der Registerkarte Einstellungen für Sitzungsskripts die Option Bearbeiten aus.

  7. Geben Sie unter Sitzungsskriptobjekt in S3 entweder die S3 URI ein, die das Sitzungsskriptobjekt darstellt, oder wählen Sie S3 durchsuchen aus, um zu Ihren S3-Buckets zu navigieren und das Sitzungsskriptobjekt zu finden.

  8. Wenn Sie die gewünschten Änderungen vorgenommen haben, wählen Sie Änderungen speichern aus.

  9. Zu diesem Zeitpunkt sind die Sitzungsskripts für alle gestarteten Flotten-Instances verfügbar.

    Anmerkung

    Sie können die Sitzungsskripts auch konfigurieren, wenn Sie eine neue Elastic-Flotte erstellen.

Sitzungsskript-Konfigurationsdatei

Navigieren Sie zu C:\AppStream\SessionScripts\config.json, um die Konfigurationsdatei der Sitzungsskripts in einer Windows-Instance zu finden. Navigieren Sie auf einer Linux-Instance zu /opt/appstream/SessionScripts/config.json. Die Datei ist wie folgt formatiert:

Anmerkung

Die Konfigurationsdatei liegt im JSON-Format vor. Verifizieren Sie, dass der gesamte eingegebene Text ein gültiges JSON-Format hat.

{ "SessionStart": { "executables": [ { "context": "system", "filename": "", "arguments": "", "s3LogEnabled": true }, { "context": "user", "filename": "", "arguments": "", "s3LogEnabled": true } ], "waitingTime": 30 }, "SessionTermination": { "executables": [ { "context": "system", "filename": "", "arguments": "", "s3LogEnabled": true }, { "context": "user", "filename": "", "arguments": "", "s3LogEnabled": true } ], "waitingTime": 30 } }

Sie können die folgenden Parameter in der Sitzungsskript-Konfigurationsdatei verwenden.

SessionStart/SessionTermination

Welche Sitzungsskripte bei Auftreten eines Sitzungsereignisses ausgeführt werden, hängt vom Namen des Objekts ab.

Typ: Zeichenfolge

Required: No

Zulässige Werte: SessionStart, SessionTermination

WaitingTime

Maximale Dauer der Sitzungsskripte in Sekunden.

Typ: Ganzzahl

Required: No

Einschränkungen: Die maximale Dauer beträgt 60 Sekunden. Wenn die Sitzungsskripte nicht innerhalb dieser Zeit abgeschlossen werden, werden sie beendet. Wenn ein Skript weiter ausgeführt werden soll, starten Sie es als einen separaten Prozess.

Ausführbare Dateien

Die Details für die auszuführenden Sitzungsskripte.

Typ: Zeichenfolge

Erforderlich: Ja

Einschränkungen: Pro Sitzungsereignis können maximal 2 Skripte ausgeführt werden (eines für den Benutzerkontext, eines für den Systemkontext).

Kontext

Der Kontext, in dem das Sitzungsskript ausgeführt werden soll.

Typ: Zeichenfolge

Erforderlich: Ja

Zulässige Werte: user, system

Dateiname

Der vollständige Pfad des auszuführenden Sitzungsskripts. Wenn dieser Parameter nicht angegeben wird, wird das Sitzungsskript nicht ausgeführt.

Typ: Zeichenfolge

Required: No

Einschränkungen: Die maximale Länge für Dateiname und vollständigen Pfad beträgt 1000 Zeichen.

Zulässige Werte: .bat, .exe, .sh

Anmerkung

Sie können auch Windows- PowerShell Dateien verwenden. Weitere Informationen finden Sie unter Verwenden von Windows- PowerShell Dateien.

Argumente

Die Argumente für das Sitzungsskript oder die ausführbare Datei.

Typ: Zeichenfolge

Required: No

Längenbeschränkungen: Die maximale Länge beträgt 1000 Zeichen.

S3LogEnabled

Wenn der Wert für diesen Parameter auf True gesetzt ist, wird im Amazon-Web-Services-Konto ein S3-Bucket zum Speichern der vom Sitzungsskript generierten Protokolle erstellt. Standardmäßig ist dieser Wert auf True festgelegt. Weitere Informationen finden Sie im Abschnitt Protokollieren der Ausgaben von Sitzungsskripten unten in diesem Thema.

Typ: Boolesch

Required: No

Zulässige Werte: True, False

Verwenden von Windows- PowerShell Dateien

Um Windows- PowerShell Dateien zu verwenden, geben Sie den vollständigen Pfad zur PowerShell Datei im filename Parameter an:

"filename": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",

Geben Sie das Sitzungsskript im Parameter arguments an:

"arguments": "-File \"C:\\path\\to\\session\\script.ps1\"",

Überprüfen Sie abschließend, ob die PowerShell Ausführungsrichtlinie die Ausführung Ihrer PowerShell Datei zulässt.

Protokollieren der Ausgaben von Sitzungsskripten

Wenn diese Option in der Konfigurationsdatei aktiviert ist, erfasst AppStream 2.0 automatisch die Ausgabe des Sitzungsskripts, das in den Standardausgang geschrieben wird. Diese Ausgabe wird in einen Amazon S3-Bucket im Konto hochgeladen. Sie können die Protokolldateien im Rahmen der Fehlerbehebung und des Debuggings heranziehen.

Anmerkung

Die Protokolldateien werden hochgeladen, wenn das Sitzungsskript einen Wert zurückgibt oder die in WaitingTime festgelegte Zeit abgelaufen ist (je nachdem, welches Ereignis zuerst eintritt).

Verwenden von Speicher-Connectors mit Sitzungsskripten

Wenn AppStream 2.0-Speicher-Connectors aktiviert sind, beginnen sie mit dem Mounten, wenn die Sitzungsstartskripts ausgeführt werden. Wenn Ihr Skript von den gemounteten Speicher-Connectors abhängt, können Sie warten, bis die Connectors verfügbar sind. AppStream 2.0 behält den Mount-Status der Speicher-Connectors in der Windows-Registrierung auf Windows-Instances bei, und zwar mit dem folgenden Schlüssel:

HKEY_LOCAL_MACHINE\ microSDT microSD\Amazon\AppStream\Storage\<provided user name>\<Storage Connector>

Die Werte des Registrierungsschlüssels lauten wie folgt:

  • Bereitgestellter Benutzername – die über den Zugriffsmodus bereitgestellte Benutzer-ID. Die verfügbaren Zugriffsmodi und die jeweils zugehörigen Werte lauten:

    • Benutzerpool – die E-Mail-Adresse des Benutzers

    • Streaming-URL – die UserID

    • SAML – die NameID. Wenn der Benutzername einen Schrägstrich enthält (z. B. das SAM eines DomänenbenutzersAccountName), wird der Schrägstrich durch ein „-“-Zeichen ersetzt.

  • Speicher-Connector – der Connector für die persistente Speicheroption, die für den Benutzer aktiviert ist. Mögliche Werte für den Speicher-Connector:

    • HomeFolder

    • GoogleDrive

    • OneDrive

Jeder Speicher-Connector-Registrierungsschlüssel enthält einen MountStatus DWORD-Wert. In der folgenden Tabelle sind die möglichen Werte für aufgeführtMountStatus.

Anmerkung

Um diese Registrierungsschlüssel anzuzeigen, müssen Sie Microsoft.NET Framework Version 4.7.2 oder höher auf Ihrem Abbild installiert haben.

Wert Beschreibung
0

Der Speicher-Connector wurde für diesen Benutzer nicht aktiviert.

1

Die Bereitstellung des Speicher-Connectors läuft.

2

Der Speicher-Connector wurde bereitgestellt.

3

Der Speicher-Connector konnte nicht bereitgestellt werden.

4

Mounting des Speicher-Connectors ist aktiviert, aber noch nicht gemountet

Auf Linux-Instances können Sie den Mountingstatus des Basisordners überprüfen, indem Sie sich den Wert von appstream_home_folder_mount_status in der Datei ~/.config/appstream-home-folder//appstream-home-folder-mount-status ansehen.

Wert Beschreibung
True

Der Basisordner wurde erfolgreich bereitgestellt.

False Der Basisordner ist noch nicht bereitgestellt.

Aktivieren der Speicherung von Sitzungsskriptprotokollen in Amazon-S3-Buckets

Wenn Sie die Amazon S3-Protokollierung in Ihrer Sitzungsskriptkonfiguration aktivieren, erfasst AppStream 2.0 die Standardausgabe Ihres Sitzungsskripts. Die Ausgabe wird regelmäßig in einen S3-Bucket im Amazon-Web-Services-Konto hochgeladen. Für jede AWS Region erstellt AppStream 2.0 einen Bucket in Ihrem Konto, der für Ihr Konto und die Region eindeutig ist.

Konfigurationsschritte zum Verwalten dieser S3-Buckets sind nicht erforderlich. Sie werden vollständig vom AppStream 2.0-Service verwaltet. Die in einem Bucket gespeicherten Protokolldateien werden während der Übertragung mit Amazon-S3-SSL-Endpunkten und im Ruhezustand mit Amazon-S3-verwalteten Verschlüsselungsschlüsseln verschlüsselt. Die Benennung der Buckets erfolgt wie folgt in einem bestimmten Format:

appstream-logs-region-code-account-id-without-hyphens-random-identifier
region-code

Dies ist der AWS Regionscode, in dem der Stack mit Amazon S3-Bucket-Speicher erstellt wird, der für Sitzungsskriptprotokolle aktiviert ist.

account-id-without-hyphens

Ihre Konto-ID für Amazon Web Services. Die zufällige ID stellt sicher, dass keine Konflikte mit anderen Buckets in dieser Region auftreten. Der erste Teil des Bucket-Namens, appstream-logs, ändert sich konto- oder regionsübergreifend nicht.

Wenn Sie beispielsweise Sitzungsskripts in einem Bild in der Region USA West (Oregon) (us-west-2) unter der Kontonummer 123456789012, AppStream 2.0 angeben, wird in Ihrem Konto in dieser Region ein Amazon S3-Bucket mit dem angezeigten Namen erstellt. Nur ein Administrator mit ausreichenden Berechtigungen kann diesen Bucket löschen.

appstream-logs-us-west-2-1234567890123-abcdefg

Durch das Deaktivieren von Sitzungsskripten werden die im S3-Bucket gespeicherten Protokolldateien nicht gelöscht. Um Protokolldateien dauerhaft zu löschen, müssen Sie oder ein anderer Administrator mit ausreichenden Berechtigungen dies über die Amazon S3-Konsole oder API. AppStream 2.0 tun, indem Sie eine Bucket-Richtlinie hinzufügen, die ein versehentliches Löschen des Buckets verhindert. Weitere Informationen finden Sie unter IAM-Richtlinien und der Amazon-S3-Bucket für Basisordner und Persistenz von Anwendungseinstellungen in Identity and Access Management für Amazon AppStream 2.0.

Wenn Sitzungsskripte aktiviert sind, wird für jede gestartete Streaming-Sitzung ein eindeutiger Ordner erstellt.

Der Pfad für den Ordner, in dem die Protokolldateien im S3-Bucket in Ihrem Konto gespeichert werden, hat die folgende Struktur:

bucket-name/stack-name/fleet-name/access-mode/user-id-SHA-256-hash/session-id/SessionScriptsLogs/session-event
bucket-name

Name des S3-Buckets, in dem die Sitzungsskripte gespeichert werden. Auf das Format des Namens wird weiter oben in diesem Abschnitt eingegangen.

Stack-Name

Name des Stacks, aus dem die Sitzung stammt.

Flottenname

Name der Flotte, für die das Sitzungsskript ausgeführt wird.

access-mode

Die Identitätsmethode des Benutzers: custom für die AppStream 2.0-API oder -CLI, federated für SAML und userpool für Benutzer im Benutzerpool.

user-id-SHA-256-hash

Der benutzerspezifische Ordnername. Der Name wird aus einer aus der Benutzer-ID generierten hexadezimalen SHA-256-Hash-Zeichenfolge in Kleinbuchstaben gebildet.

Sitzungs-ID

ID der Streaming-Sitzung des Benutzers. Für jede Streaming-Sitzung eines Benutzers wird eine eindeutige ID generiert.

Sitzungsereignis

Ereignis, das zum Generieren des Sitzungsprotokolls geführt hat. Die Ereigniswerte lauten SessionStart und SessionTermination.

Das folgende Beispiel für eine Ordnerstruktur gilt für eine Streaming-Sitzung, die von test-stack und test-fleet gestartet wurde. Die Sitzung verwendet die API der Benutzer-ID testuser@mydomain.com, von einer AWS-Konto ID von 123456789012und die Einstellungsgruppe test-stack in der Region USA West (Oregon) (us-west-2):

appstream-logs-us-west-2-1234567890123-abcdefg/test-stack/test-fleet/custom/a0bcb1da11f480d9b5b3e90f91243143eac04cfccfbdc777e740fab628a1cd13/05yd1391-4805-3da6-f498-76f5x6746016/SessionScriptsLogs/SessionStart/

Dieses Beispiel für eine Ordnerstruktur enthält eine Protokolldatei eines Startskripts für eine Benutzerkontextsitzung sowie eine Protokolldatei eines Startskripts für eine Systemkontextsitzung (sofern relevant).

Verwenden von Sitzungsskripten für Flotten mit mehreren Sitzungen

Bei der Verwendung von Sitzungsskripten auf Flotten mit mehreren Sitzungen gibt es zusätzliche Anforderungen und Überlegungen, um eine optimale Leistung und Sicherheit zu gewährleisten.

Voraussetzungen

Auf einer Single-Session-Flotte werden die SessionTermination Hooks SessionStart und für eine bestimmte Instance garantiert nur einmal ausgeführt. Dies liegt daran, dass es eine 1:1-Zuweisung von Sitzungen zu Instances gibt. Bei der Verwendung von Flotten mit mehreren Sitzungen gibt es eine N:M-Zuweisung von Sitzungen zu Instances, in der jede Sitzung ihre eigenen SessionStart und SessionTermination Hooks ausführt. Das bedeutet, dass die SessionTermination Hooks SessionStart und auf einer bestimmten Instance und in vielen verschiedenen Reihenfolgen mehrmals ausgeführt werden können. Für ein optimales Erlebnis sollte Folgendes für Ihre Sitzungsskripte gelten, wenn sie auf Flotten mit mehreren Sitzungen verwendet werden:

  • Skripte sind idempotent.

    Wenn eine Aktion bereits ausgeführt wurde, sollten Skripts mehr als eine Ausführung auf derselben Instance mit ordnungsgemäßer Verarbeitung verarbeiten.

  • Skripte sind unabhängig.

    Da Skripts pro Sitzung ausgeführt werden, sollten SessionStartsie sich nicht gegenseitig oder durch andere Sitzungen stören, wenn eine Sitzung ausgeführt SessionTermination wird.

  • Skripte sind leistungsfähig.

    Auf Instances mit mehreren Sitzungen können mehrere Sitzungen gleichzeitig bereitgestellt werden. Das bedeutet, dass es mehrere gleichzeitige Ausführungen der Sitzungsskripts geben kann. Skripte sollten effizient sein, keine übermäßigen Ressourcen verbrauchen und sich nicht auf die Erfahrung anderer Benutzer auf der Instance oder die Stabilität der Sitzungen auswirken.

Viele dieser Anforderungen können erfüllt werden, indem die Logik des Sitzungsskripts auf die spezifische Benutzersitzung ausgerichtet bleibt, für die das Skript ausgeführt wird.

Sicherheitsüberlegungen

AppStream 2.0-Images sollten nicht so konfiguriert werden, dass sie Schreibberechtigungen für Sitzungsskriptdateien von Benutzern erlauben. Dies führt einen kritischen Angriffsvektor für böswillige Benutzer ein, bei dem sie Skriptdateien ändern können. Diese Dateien können dann je nach Konfiguration als SYSTEM oder als ein anderer Benutzer ausgeführt werden.

Wichtig

Es liegt in Ihrer Verantwortung sicherzustellen, dass Ihre AppStream 2.0-Images sicher konfiguriert sind. Dies ist besonders wichtig für Multi-Session-Instances, bei denen mehrere Benutzer dieselbe Instance verwenden. Wenn Images nicht sicher konfiguriert sind, besteht ein Sicherheitsrisiko für alle Benutzer dieser Instance.

Folgendes sollte für Ihre Abbilder und Sitzungsskriptdateien zutreffen:

  • Benutzer haben keine Berechtigung zum Ändern von Sitzungsskriptdateien.

  • Benutzer sind nicht berechtigt, das Sitzungsskript config.json zu ändern. Das Standardverhalten auf dem Image beschränkt den Zugriff auf Administratoren.

Ausführliche Sitzungsskripte sollten an einem sicheren Ort gespeichert werden, an dem sie zur Laufzeit vor Änderungen geschützt sind.

Wenn der Service erkennt, dass eine ausführbare Sitzungsskriptdatei geändert wurde, schlägt er alle nachfolgenden Ausführungen dieses Hooks auf dieser Instance fehl, Protokolldateien werden in Amazon S3 hochgeladen (wenn die Amazon S3-Protokollierung aktiviert ist) und Sie erhalten die folgende Meldung:

Das Sitzungsskript wurde nicht ausgeführt, da die ausführbare Datei nach der Instance-Bereitstellung geändert wurde. Die Ausführung wurde aus Sicherheitsgründen übersprungen.

Wenn Ihr Anwendungsfall erfordert, dass die ausführbare Sitzungsskriptdatei zur Laufzeit geändert wird (wenn Sie beispielsweise auf eine EXE-Datei verweisen, die zur Laufzeit durch einen automatischen Aktualisierungsprozess geändert wird), schlagen die oben genannten Prüfungen fehl. Verwenden Sie in diesem Fall ein Skript, um die Ausführung an Ihre geänderte ausführbare Datei umzuleiten. Lassen Sie das Skript zur Laufzeit unverändert, wenn der Service Sicherheitsprüfungen durchführt.

Wenn Ihre Sitzungsskriptdateien übermäßig groß sind (mehr als 100 MB), kann dies zu Verzögerungen bei der Instance- und Sitzungsbereitstellung führen, und die Sicherheitsprüfungen dauern zusätzliche Zeit (je nach Instance-Typ und verfügbaren Ressourcen). Wenn Ihr Anwendungsfall große Sitzungsskripts erfordert, sollten Sie erwägen, kleinere Skripts zu verwenden, um die Ausführung umzuleiten. Dies verbessert die Bereitstellung von Instances und Sitzungen.

Beachten Sie, dass der Service nur die ausführbare Datei überprüft, die in den Sitzungsskripten config.json definiert ist, und dies ist nur ein Fallback-/Best-Effort-Mechanismus. Es liegt in Ihrer Verantwortung sicherzustellen, dass alle Codepfade in ausführbaren Sitzungsskripten sicher sind und nicht von Endbenutzern geändert werden können.