Warum stellt mein Notebook von Amazon SageMaker Studio im Nur-VPC-Modus keine Verbindung zu meiner KernelGateway-App her?

Lesedauer: 8 Minute
0

Ich habe Verbindungsprobleme zwischen meinem Notebook von Amazon SageMaker Studio im Nur-VPC-Modus und meiner KernelGateway-App.

Kurzbeschreibung

Möglicherweise erhalten Sie die folgenden Fehler, wenn Sie SageMaker Studio im Nur-VPC-Modus verwenden und die KernelGateway-App nicht starten können:

Sie können SageMaker Studio starten, aber Ihr Kernel schlägt mit dem folgenden Fehler fehl:

SageMaker Studio is unable to connect KernelGateway App. In VPCOnly mode, please ensure that security groups allow TCP traffic within the security group

Sie erhalten diesen Fehler meist, weil die Sicherheitsgruppe nicht selbstreferenzierend ist, um die Verbindung zwischen den Instances innerhalb Ihrer SageMaker-Domäne zu ermöglichen.

Beispiel: Angenommen, Sie können SageMaker Studio starten, aber das Laden dauert sehr lange und der Kernel kann nicht gestartet werden:

Failed to start kernel
Failed to launch app [None]. SageMaker Studio is unable to reach SageMaker endpoint. Please ensure your VPC has connectivity to SageMaker via Internet or VPC Endpoint. If you are using VPC Endpoints, please ensure Security Groups allows traffic between Studio and VPC endpoints.

Dieser Fehler tritt auf, wenn Ihre Nur-VPC-Domäne keine Verbindung zum Internet oder zu Endpunkten von Amazon Virtual Private Cloud (Amazon VPC) herstellen kann. Dies kann verschiedene Gründe haben, zum Beispiel die folgenden:

  • Sicherheitsgruppen sind nicht korrekt konfiguriert.
  • Ihr Subnetz hat nicht die richtigen VPC-Endpunkte.
  • Ihre Domäne ist mit einem privaten Subnetz verbunden, und Ihrer Routing-Tabelle wurde kein aktives NAT-Gateway hinzugefügt.
  • Sie haben Ihr SageMaker Studio so eingerichtet, dass es eine Verbindung zu öffentlichen Subnetzen herstellt.

Lösung

Stellen Sie sicher, dass die Sicherheitsgruppen für SageMaker Studio die erforderlichen Regeln enthalten

Stellen Sie sicher, dass der AWS Network File System (AWS NFS)-Datenverkehr zwischen der Domain und dem Amazon Elastic File System (Amazon EFS)-Volume über TCP auf Port 2049 zulässig ist. Ihre Daten von SageMaker Studio werden mit Amazon EFS gespeichert. Daher benötigen Sie die Regeln, um eingehende und ausgehende Verbindungen zu Speicherzwecken zuzulassen.

Gehen Sie wie folgt vor, um eingehenden Datenverkehr von Amazon EFS zu Ihren Ressourcen zuzulassen:

  1. Öffnen Sie die Amazon-VPC-Konsole.
  2. Wählen Sie im Navigationsbereich Security Groups (Sicherheitsgruppen) aus.
  3. Wählen Sie die Sicherheitsgruppe aus, die Sie aktualisieren möchten.
  4. Wählen Sie Actions (Aktionen) und dann Edit inbound rules (Eingehende Regeln bearbeiten) aus.
  5. Wählen Sie Add rule (Regel hinzufügen) und geben Sie Folgendes ein:
    Wählen Sie als Type (Typ) NFS.
    Wählen Sie für Source (Quelle) die Option Custom (Benutzerdefiniert) aus und geben Sie dann die Amazon-EFS-ID ein.
  6. Wählen Sie Save rules (Regeln speichern) aus.

Sie müssen TCP-Datenverkehr innerhalb der Sicherheitsgruppe zulassen, um die Konnektivität zwischen den JupyterServer- und KernelGateway-Apps zu ermöglichen. Da Sie die Studio-Domäne im Nur-VPC-Modus erstellt haben, müssen Sie mindestens eine Sicherheitsgruppe für Ihre Domänenressourcen in SageMaker Studio angeben. Diese Sicherheitsgruppe muss eingehenden Datenverkehr über TCP an den Ports 8192–65535 und den gesamten ausgehenden Datenverkehr an 0.0.0.0/0 zulassen.

Gehen Sie wie folgt vor, um Konnektivität zwischen den JupyterServer- und KernelGateway-Apps zu ermöglichen:

  1. Öffnen Sie die Amazon-VPC-Konsole.
  2. Wählen Sie im Navigationsbereich Security Groups (Sicherheitsgruppen) aus.
  3. Wählen Sie die Sicherheitsgruppe aus, die Sie aktualisieren möchten.
  4. Wählen Sie Actions (Aktionen) und dann Edit inbound rules (Eingehende Regeln bearbeiten) aus.
  5. Wählen Sie Add rule (Regel hinzufügen) und geben Sie Folgendes ein:
    Wählen Sie Custom TCP (Benutzerdefiniertes TCP) als Typ aus.
    Geben Sie 8192–65535 als Portbereich ein.
    Wählen Sie für Source (Quelle) die Option Custom (Benutzerdefiniert) aus und geben Sie die Sicherheitsgruppen-ID der zu bearbeitenden Sicherheitsgruppe ein.
  6. Wählen Sie Save rules (Regeln speichern) aus.

Wenn Sie über Ihr SageMaker-Studio-Notebook auf eine Ressource in Ihrer Amazon VPC zugreifen, wird der Datenverkehr vom SageMaker-Servicekonto über Ihre Elastic-Network-Schnittstelle geleitet. Beachten Sie, dass sich sowohl die JupyterServer- als auch die KernelGateway-App in der VPC Ihres SageMaker-Servicekontos befinden. Sie kommunizieren miteinander über die Elastic-Network-Schnittstellen, die an Ihre VPC angefügt sind. Obwohl diese Apps Teil des Servicekontos der SageMaker-Studio-Domain sind, werden sie auf unterschiedlichen Amazon Elastic Compute Cloud (Amazon EC2)-Instances ausgeführt. Diese Apps verwenden die flüchtigen Ports, um eine Verbindung untereinander herzustellen. Es gibt keinen bestimmten Port, über den sich diese Apps verbinden. Daher ist es eine bewährte Methode, alle TCP-Ports in selbstreferenzierenden Sicherheitsgruppen geöffnet zu lassen. Weitere Informationen finden Sie unter Dive deep into Amazon SageMaker Studio notebooks architecture (Tauchen Sie ein in die Architektur von Amazon-SageMaker-Studio-Notebooks).

Stellen Sie sicher, dass die erforderlichen VPC-Endpunkte erstellt wurden

Wenn Ihre SageMaker-Studio-Ressourcen keinen Zugriff auf das Internet benötigen, müssen Sie kein NAT-Gateway hinzufügen. Für die Ausführung von Studio-Notebooks sind jedoch die folgenden Endpunkte erforderlich:

  • SageMaker-API: com.amazonaws.<aws-region>.sagemaker.api
  • SageMaker-Laufzeit: com.amazonaws.<aws-region>.sagemaker.runtime

Erstellen Sie unbedingt die folgenden Endpunkte, um auf Amazon Simple Storage Service (Amazon S3) und Projektvorlagen zugreifen zu können:

  • Für Amazon S3: com.amazonaws. <aws-region>.s3
  • Für Amazon-SageMaker-Projektvorlagen: com.amazonaws.<aws-region>.servicecatalog

Stellen Sie sicher, dass Sie die Sicherheitsgruppen für Ihre VPC mit diesen VPC-Endpunkten verknüpfen, indem Sie wie folgt vorgehen:

  1. Öffnen Sie die Amazon-VPC-Konsole.
  2. Wählen Sie Endpunkte im Navigationsbereich aus.
  3. Wählen Sie den Endpunkt aus, den Sie aktualisieren möchten.
  4. Wählen Sie Actions (Aktionen) und dann Manage security groups (Sicherheitsgruppen verwalten).
  5. Wählen Sie die Sicherheitsgruppe aus, die diesem Endpunkt zugeordnet sein muss.
  6. Wählen Sie Save (Speichern) aus.

Weitere Informationen finden Sie unter:

Stellen Sie sicher, dass Sie ein NAT-Gateway verwenden, wenn Sie eine Internetverbindung benötigen

Wenn Ihre SageMaker-Studio-Ressourcen Zugriff auf das Internet benötigen, vergewissern Sie sich zunächst, dass Ihr SageMaker Studio für die Verbindung mit privaten Subnetzen eingerichtet ist. Erstellen Sie dann ein NAT-Gateway und lassen Sie den Datenverkehr vom NAT-Gateway über die Routing-Tabelle Ihres privaten Subnetzes zu. Weitere Informationen finden Sie unter How do I set up a NAT gateway for a private subnet in Amazon VPC? (Wie richte ich ein NAT-Gateway für ein privates Subnetz in Amazon VPC ein?). Beachten Sie, dass die SageMaker-Studio-Domäne, die mit einem öffentlichen Subnetz verbunden ist, es Ihnen nicht ermöglicht, eine Verbindung zum Internet herzustellen.

Stellen Sie sicher, dass die Netzwerkanforderungen für Ihre VPC erfüllt sind

Wenn Sie SageMaker Studio im Nur-VPC-Modus gestartet haben, stellen Sie sicher, dass Ihre VPC die folgenden Anforderungen erfüllt:

  • Die Subnetze müssen über genügend verfügbare IP-Adressen für die Instance verfügen.
  • Achten Sie darauf, dass Sie die SageMaker-Domain bei der Domain-Erstellung mit einem privaten Subnetz verknüpfen, um den Internetzugang zu ermöglichen. Verwenden Sie auch das NAT-Gateway für den Internetzugang.
  • Wenn Sie für die Ausführung von SageMaker-APIs einen VPC-Endpunkt verwenden, dann stellen Sie sicher, dass die Attribute Enable DNS hostnames (DNS-Hostnamen aktivieren) und Enable DNS Support (DNS-Support aktivieren) für Ihre VPC auf true (wahr) gesetzt sind. Dies ist erforderlich, damit Ihre VPC beim Starten des Kernels eine Verbindung zum SageMaker-API-Endpunkt herstellen kann.

Sie können die Befehle der AWS Command Line Interface (AWS CLI) verwenden, um sicherzustellen, dass die richtigen Sicherheitsgruppen an die Domain angehängt sind. Um die DefaultUserSettings Ihrer Studio-Domain zu aktualisieren und die neue Sicherheitsgruppe zu verwenden, führen Sie den Befehl update-domain aus:

aws sagemaker update-domain –domain-id <value> --default-user-settings SecurityGroups=<list>

Sie können die Domain auch neu konfigurieren, indem Sie die Domain neu erstellen, der die erforderlichen Sicherheitsgruppen zugeordnet sind. Die Ausgabe für den Parameter SecurityGroups listet alle Sicherheitsgruppen für die VPC auf, die Studio für die Kommunikation verwendet.

Hinweis: Um den vorherigen Befehl auszuführen, müssen Sie alle Apps mit dem Status InService aus Ihren Benutzerprofilen entfernen.

Nachdem der Befehl update-domain erfolgreich ausgeführt wurde, können Sie Ihre Domäne mit dem Befehl describe-domain überprüfen:

Beispiel:

$ aws sagemaker describe-domain --domain-id d-xyzxyz

Starten Sie anschließend SageMaker Studio erneut und vergewissern Sie sich, dass das Notebook korrekt gestartet wird. Sie können die Internetverbindung auch testen, indem Sie !curl amazon.com in einer Notebook-Zelle ausführen.

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version des AWS CLI verwenden.

Löschen Sie die JupyterServer-App und starten Sie eine neue, damit die aktualisierten Einstellungen wirksam werden. Nachdem Sie die Amazon-VPC-Einstellungen aktualisiert haben, können Sie Ihr SageMaker-Studio-Benutzerprofil verwenden. Weitere Informationen finden Sie im Abschnitt Anforderungen für die Verwendung des Nur-VPC-Modus unter Verbinden von SageMaker-Studio-Notebooks in einer VPC mit externen Ressourcen.

Andere Überlegungen

Wenn dieses Problem nur bei einem Benutzer auftritt, überprüfen Sie, ob die Standard-App gestartet wurde, bevor die VPC-Updates abgeschlossen wurden. In diesem Fall wird die Standard-JupyterServer-App nicht automatisch aktualisiert, um die neue VPC-Konfiguration zu verwenden, was zu Verbindungsproblemen führt. Überprüfen Sie auch, ob die Standard-JupyterServer-App vor Wochen oder Monaten gestartet wurde. Dies kann dazu führen, dass die App große Protokolldateien und temporäre Dateien aufweist. Versuchen Sie, die Standard-App neu zu erstellen, um Speicherplatz freizugeben oder um sicherzustellen, dass die App die aktualisierte VPC-Konfiguration verwendet.

Das Problem kann auftreten, wenn Benutzer von SageMaker Studio mit einer anderen Ausführungsrolle konfiguriert sind. Vergewissern Sie sich, dass die Ausführungsberechtigungen der Benutzer die erforderlichen Richtlinien enthalten. Diese Richtlinien müssen die Ausführungsrolle aktivieren, um die Aktion DescribeApp auszuführen, die zum Erstellen von Studio-Notebooks erforderlich ist. Nachdem Sie diese Berechtigungen für die Ausführungsrolle aktualisiert haben, versuchen Sie, Studio-Notebooks im Nur-VPC-Modus bereitzustellen.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr