Teil 1 – Integration von Amazon FSx for NetApp ONTAP (FSx ONTAP) als privater S3-Bucket in AWS SageMaker
Dieser Abschnitt enthält eine Anleitung zum Konfigurieren von FSx ONTAP als privater S3-Bucket mit AWS SageMaker.
Einführung
Am Beispiel von SageMaker bietet diese Seite eine Anleitung zum Konfigurieren von FSx ONTAP als privatem S3-Bucket.
Weitere Informationen zu FSx ONTAP finden Sie in dieser Präsentation ("Videolink" )
User Guide
Servererstellung
Erstellen einer 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 Notebook-Instanzen unter der Registerkarte „Notebook“ und klicken Sie auf die orangefarbene Schaltfläche „Notebook-Instanz erstellen“*.
-
Geben Sie auf der Erstellungsseite den Namen der Notebook-Instanz ein. Erweitern Sie das Netzwerk-Bedienfeld. Belassen Sie die anderen Einträge auf den Standardwerten und wählen Sie eine VPC, ein Subnetz und Sicherheitsgruppe(n) aus. (Diese VPC und dieses Subnetz werden später zum Erstellen des FSx ONTAP Dateisystems verwendet.) Klicken Sie unten rechts auf die orangefarbene Schaltfläche Notebook-Instanz erstellen.
Erstellen Sie ein FSx ONTAP Dateisystem
-
Öffnen Sie die AWS-Konsole. Suchen Sie im Suchfeld nach Fsx und klicken Sie auf den Dienst FSx.
-
Klicken Sie auf Dateisystem erstellen.
-
Wählen Sie die erste Karte FSx ONTAP aus und klicken Sie auf Weiter.
-
Auf der Detailkonfigurationsseite.
-
Wählen Sie die Option Standard erstellen.
-
Geben Sie den Dateisystemnamen und die SSD-Speicherkapazität ein.
-
Stellen Sie sicher, dass Sie dasselbe VPC und Subnetz wie für die SageMaker Notebook-Instanz verwenden.
-
Geben Sie den Namen der Storage Virtual Machine ein und Geben Sie ein Kennwort an für Ihre SVM (Storage Virtual Machine).
-
Belassen Sie die anderen Einträge auf Standard und klicken Sie unten rechts auf die orangefarbene Schaltfläche Weiter.
-
Klicken Sie unten rechts auf der Überprüfungsseite auf die orangefarbene Schaltfläche Dateisystem erstellen.
-
-
Das Hochfahren des FSx-Dateisystems kann etwa 20–40 Minuten dauern.
Serverkonfiguration
ONTAP -Konfiguration
-
Öffnen Sie das erstellte FSx-Dateisystem. Bitte stellen Sie sicher, dass der Status Verfügbar ist.
-
Wählen Sie die Registerkarte Administration und behalten Sie die IP-Adresse des Verwaltungsendpunkts und den * ONTAP -Administratorbenutzernamen* bei.
-
Öffnen Sie die erstellte SageMaker Notebook-Instanz und klicken Sie auf JupyterLab öffnen.
-
Öffnen Sie auf der Jupyter Lab-Seite ein neues Terminal.
-
Geben Sie den SSH-Befehl ssh <Administrator-Benutzername>@ <ONTAP> ein, um sich beim FSx ONTAP Dateisystem anzumelden. (Benutzername und IP-Adresse werden aus Schritt 2 abgerufen) Bitte verwenden Sie das Kennwort, das Sie beim Erstellen der Storage-virtuellen Maschine verwendet haben.
-
Führen Sie die Befehle in der folgenden Reihenfolge aus. Wir verwenden fsxn-ontap als Namen für den Namen des privaten S3-Buckets von FSx ONTAP *. Bitte verwenden Sie den *Namen der virtuellen Speichermaschine für das Argument -vserver.
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 Anmeldeinformationen 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
-
Bewahren Sie die Endpunkt-IP und die Anmeldeinformationen für die zukünftige Verwendung auf.
Client-Konfiguration
-
Erstellen Sie in der SageMaker-Notebook-Instanz ein neues Jupyter-Notebook.
-
Verwenden Sie den folgenden Code als Workaround-Lösung, um Dateien in den privaten S3-Bucket von FSx ONTAP hochzuladen. Ein umfassendes 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 Checkliste zum Debuggen
-
Stellen Sie sicher, dass sich die SageMaker Notebook-Instance und das FSx ONTAP Dateisystem im selben VPC befinden.
-
Denken Sie daran, den Befehl set dev auf ONTAP auszuführen, um die Berechtigungsstufe auf dev festzulegen.
FAQ (Stand: 27.09.2023)
F: Warum erhalte ich beim Hochladen von Dateien auf FSx ONTAP die Fehlermeldung „Beim Aufrufen des Vorgangs „CreateMultipartUpload“ ist ein Fehler aufgetreten (NotImplemented): Der von Ihnen angeforderte S3-Befehl ist nicht implementiert“?
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, die größer als 100 MB sind, in 100-MB-Blöcke aufgeteilt und die Funktion „CreateMultipartUpload“ aufgerufen. Die aktuelle Implementierung von FSx ONTAP private S3 unterstützt diese Funktion jedoch nicht.
F: Warum erhalte ich beim Hochladen von Dateien auf FSx ONTAP die Fehlermeldung „Beim Aufrufen der PutObject-Operationen ist ein Fehler aufgetreten (Zugriff verweigert): Zugriff verweigert“?
A: Um von einer SageMaker Notebook-Instanz auf den privaten S3-Bucket von FSx ONTAP zuzugreifen, ändern Sie die AWS-Anmeldeinformationen in die FSx ONTAP Anmeldeinformationen. Um der Instanz Schreibberechtigungen zu erteilen, ist jedoch eine Problemumgehungslösung erforderlich, bei der der Bucket gemountet und der Shell-Befehl „chmod“ ausgeführt wird, um die Berechtigungen zu ändern.
F: Wie kann ich den privaten S3-Bucket von FSx ONTAP in andere SageMaker ML-Dienste 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 mit SageMaker-Diensten wie Sagemaker Data Wrangler, Sagemaker Clarify, Sagemaker Glue, Sagemaker Athena, Sagemaker AutoML und anderen kompatibel.