Teil 1 – Integration von Amazon FSX for NetApp ONTAP (FSX ONTAP) als privaten S3-Bucket in AWS SageMaker
Dieser Abschnitt enthält einen Leitfaden zur Konfiguration von FSX ONTAP als privaten S3-Bucket mit AWS SageMaker.
Autor(en):
Jian Jian (Ken), Senior Data & Applied Scientist, NetApp
Einführung
Anhand von SageMaker als Beispiel enthält diese Seite Anleitungen zur Konfiguration von FSX ONTAP als privaten S3-Bucket.
Für weitere Informationen über FSX ONTAP, nehmen Sie bitte einen Blick auf diese Präsentation ("Video-Link")
Benutzerhandbuch
Server-Erstellung
Erstellen Sie eine SageMaker-Notebook-Instanz
-
Öffnen Sie die AWS-Konsole. Suchen Sie im Suchfeld nach SageMaker und klicken Sie auf den Dienst Amazon SageMaker.
-
Öffnen Sie die Notizbuchinstanzen unter der Registerkarte Notizbuch, klicken Sie auf die orangefarbene Schaltfläche Notizbuchinstanz erstellen.
-
Geben Sie auf der Erstellungsseite den Namen der Notebook-Instanz ein erweitern Sie das Feld Netzwerk andere Einträge standardmäßig lassen und wählen Sie eine VPC, Subnetz und Sicherheitsgruppe(n) aus. (Diese VPC und Subnetz werden später verwendet, um FSX ONTAP Dateisystem zu erstellen) Klicken Sie auf die orangefarbene Schaltfläche Notizbuchinstanz erstellen unten rechts.
Erstellen Sie ein FSX ONTAP Dateisystem
-
Öffnen Sie die AWS-Konsole. Suchen Sie im Suchfeld FSX und klicken Sie auf den Dienst FSX.
-
Klicken Sie auf Dateisystem erstellen.
-
Wählen Sie die erste Karte FSX ONTAP und klicken Sie auf Weiter.
-
Auf der Konfigurationsseite für Details.
-
Wählen Sie die Option Standard create.
-
Geben Sie den Namen des Dateisystems und die Kapazität des SSD-Speichers ein.
-
Stellen Sie sicher, dass Sie die VPC und Subnetz mit der SageMaker Notebook-Instanz identisch verwenden.
-
Geben Sie den Namen der Storage Virtual Machine und Geben Sie ein Passwort für Ihre SVM (Storage Virtual Machine) ein.
-
Lassen Sie andere Einträge standardmäßig und klicken Sie auf die orangefarbene Schaltfläche Weiter unten rechts.
-
Klicken Sie auf die orangefarbene Schaltfläche Dateisystem erstellen unten rechts auf der Überprüfungsseite.
-
-
Es kann ungefähr 20-40 Minuten* dauern, um das FSX Dateisystem hochzudrehen.
Serverkonfiguration
ONTAP-Konfiguration
-
Öffnen Sie das erstellte FSX Dateisystem. Bitte stellen Sie sicher, dass der Status verfügbar ist.
-
Wählen Sie die Registerkarte Verwaltung aus und behalten Sie die Optionen Verwaltungsendpunkt - IP-Adresse und ONTAP-Administratorbenutzername bei.
-
Öffnen Sie die erstellte SageMaker Notebook-Instanz und klicken Sie auf JupyterLab öffnen.
-
Öffnen Sie auf der Seite Jupyter Lab ein neues Terminal.
-
Geben Sie den ssh-Befehl ssh <admin user Name>@<ONTAP Server IP> ein, um sich beim FSX ONTAP-Dateisystem anzumelden. (Der Benutzername und die IP-Adresse werden aus Schritt 2 abgerufen) Bitte verwenden Sie das Passwort, das beim Erstellen der Storage Virtual Machine verwendet wird.
-
Führen Sie die Befehle in der folgenden Reihenfolge aus. Wir verwenden fsxn-ONTAP als Namen für den FSX ONTAP privaten S3-Bucket-Namen. Bitte verwenden Sie für das Argument -vserver den Namen der virtuellen Speichermaschine*.
vserver object-store-server create -vserver fsxn-svm-demo -object-store-server fsx_s3 -is-http-enabled true -is-https-enabled false vserver object-store-server user create -vserver fsxn-svm-demo -user s3user vserver object-store-server group create -name s3group -users s3user -policies FullAccess vserver object-store-server bucket create fsxn-ontap -vserver fsxn-svm-demo -type nas -nas-path /vol1
-
Führen Sie die folgenden Befehle aus, um die Endpunkt-IP und die Zugangsdaten für FSX ONTAP Private S3 abzurufen.
network interface show -vserver fsxn-svm-demo -lif nfs_smb_management_1 set adv vserver object-store-server user show
-
Die IP-Adresse des Endpunkts und die Anmeldeinformationen bleiben für die zukünftige Verwendung erhalten.
Client-Konfiguration
-
Erstellen Sie in der SageMaker-Notebook-Instanz ein neues Jupyter-Notebook.
-
Verwenden Sie den unten stehenden Code als Umgehung, um Dateien in FSX ONTAP privaten S3 Bucket hochzuladen. Ein umfangreiches Codebeispiel finden Sie in diesem Notizbuch. "Fsxn_Demo.ipynb"
# Setup configurations # -------- Manual configurations -------- seed: int = 77 # Random seed bucket_name: str = 'fsxn-ontap' # The bucket name in ONTAP aws_access_key_id = '<Your ONTAP bucket key id>' # Please get this credential from ONTAP aws_secret_access_key = '<Your ONTAP bucket access key>' # Please get this credential from ONTAP fsx_endpoint_ip: str = '<Your FSx ONTAP IP address>' # Please get this IP address from FSx ONTAP # -------- Manual configurations -------- # Workaround ## Permission patch !mkdir -p vol1 !sudo mount -t nfs $fsx_endpoint_ip:/vol1 /home/ec2-user/SageMaker/vol1 !sudo chmod 777 /home/ec2-user/SageMaker/vol1 ## Authentication for FSx ONTAP as a Private S3 Bucket !aws configure set aws_access_key_id $aws_access_key_id !aws configure set aws_secret_access_key $aws_secret_access_key ## Upload file to the FSx ONTAP Private S3 Bucket %%capture local_file_path: str = <Your local file path> !aws s3 cp --endpoint-url http://$fsx_endpoint_ip /home/ec2-user/SageMaker/$local_file_path s3://$bucket_name/$local_file_path # Read data from FSx ONTAP Private S3 bucket ## Initialize a s3 resource client import boto3 # Get session info region_name = boto3.session.Session().region_name # Initialize Fsxn S3 bucket object # --- Start integrating SageMaker with FSXN --- # This is the only code change we need to incorporate SageMaker with FSXN s3_client: boto3.client = boto3.resource( 's3', region_name=region_name, aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, use_ssl=False, endpoint_url=f'http://{fsx_endpoint_ip}', config=boto3.session.Config( signature_version='s3v4', s3={'addressing_style': 'path'} ) ) # --- End integrating SageMaker with FSXN --- ## Read file byte content bucket = s3_client.Bucket(bucket_name) binary_data = bucket.Object(data.filename).get()['Body']
Damit ist die Integration zwischen FSX ONTAP und der SageMaker-Instanz abgeschlossen.
Nützliche Debugging-Checkliste
-
Stellen Sie sicher, dass sich die SageMaker-Notebook-Instanz und das FSX ONTAP-Dateisystem in derselben VPC befinden.
-
Denken Sie daran, den Befehl set dev auf ONTAP auszuführen, um die Berechtigungsebene auf dev zu setzen.
FAQ (Stand 27. September 2023)
F: Warum erhalte ich den Fehler "ein Fehler ist aufgetreten (NotImplementiert) beim Aufruf der CreateMultipartUpload Operation: Der von Ihnen angeforderte s3 Befehl ist nicht implementiert" beim Hochladen von Dateien auf FSX ONTAP?
A: Als privater S3-Bucket unterstützt FSX ONTAP das Hochladen von Dateien mit bis zu 100 MB. Bei Verwendung des S3-Protokolls werden Dateien mit einer Größe von mehr als 100 MB in 100-MB-Blöcke unterteilt, und die Funktion „CreateMultipartUpload“ wird aufgerufen. Die aktuelle Implementierung von FSX ONTAP private S3 unterstützt diese Funktion jedoch nicht.
F: Warum erhalte ich den Fehler "ein Fehler ist aufgetreten (AccessDenied) beim Aufruf der PutObject-Operationen: Zugriff verweigert" beim Hochladen von Dateien auf FSX ONTAP?
A: Um von einer SageMaker-Notebook-Instanz auf den privaten S3-Bucket von FSX ONTAP zuzugreifen, wechseln Sie die AWS-Anmeldeinformationen zu den FSX ONTAP-Anmeldeinformationen. Die Gewährung von Schreibberechtigungen für die Instanz erfordert jedoch eine Problemumgehungslösung, bei der der Bucket gemountet und der Shell-Befehl 'chmod' ausgeführt wird, um die Berechtigungen zu ändern.
F: Wie kann ich den FSX ONTAP privaten S3-Eimer mit anderen SageMaker ML-Diensten integrieren?
A: Leider bietet das SageMaker Services SDK keine Möglichkeit, den Endpunkt für den privaten S3-Bucket anzugeben. Daher ist FSX ONTAP S3 nicht kompatibel mit SageMaker-Diensten wie SageMaker-Datenwächter, SageMaker-Klarstellung, SageMaker-Kleber, SageMaker-Athena, SageMaker-AutoML und anderen.