1re partie : intégration d'AWS FSX pour NetApp ONTAP (FSxN) en tant que compartiment S3 privé dans AWS SageMaker
Auteur(s):
Jian Jian (Ken), scientifique senior en données et applications, NetApp
Introduction
Utilisation de SageMaker comme exemple, cette page fournit des conseils sur la configuration de FSxN en tant que compartiment S3 privé.
Pour plus d'informations sur FSxN, veuillez consulter cette présentation ("Lien vidéo")
Guide de l'utilisateur
Création du serveur
Créez une instance de bloc-notes SageMaker
-
Ouvrez la console AWS. Dans le panneau de recherche, recherchez SageMaker et cliquez sur le service Amazon SageMaker.
-
Ouvrez Notebook instances sous l'onglet Notebook, cliquez sur le bouton orange Créer une instance de bloc-notes.
-
Dans la page de création,
Entrez le Nom de l'instance du bloc-notes
Développez le panneau réseau
Laissez les autres entrées par défaut et sélectionnez un VPC, Subnet et Groupe(s) de sécurité. (Ce VPC et ce Subnet seront utilisés ultérieurement pour créer un système de fichiers FSxN)
Cliquez sur le bouton orange Créer une instance de bloc-notes en bas à droite.
Créez un système de fichiers FSxN
-
Ouvrez la console AWS. Dans le panneau de recherche, recherchez FSX et cliquez sur le service FSX.
-
Cliquez sur Créer un système de fichiers.
-
Sélectionnez la première carte FSX pour NetApp ONTAP et cliquez sur Suivant.
-
Dans la page de configuration détaillée.
-
Sélectionnez l'option création standard.
-
Entrez le Nom du système de fichiers et la capacité de stockage SSD.
-
Assurez-vous d'utiliser le VPC et le subnet de la même manière que l'instance SageMaker Notebook.
-
Entrer le nom Storage Virtual machine et spécifier un mot de passe pour votre SVM (Storage Virtual machine).
-
Laissez les autres entrées par défaut et cliquez sur le bouton orange Suivant en bas à droite.
-
Cliquez sur le bouton orange Créer un système de fichiers en bas à droite de la page de revue.
-
-
Le démarrage du système de fichiers FSX peut prendre environ 20-40 minutes.
Configuration du serveur
Configuration ONTAP
-
Ouvrez le système de fichiers FSX créé. Veuillez vous assurer que l'état est disponible.
-
Sélectionnez l'onglet Administration et conservez le noeud final de gestion - adresse IP et le nom d'utilisateur de l'administrateur ONTAP.
-
Ouvrez l'instance SageMaker Notebook créée et cliquez sur Ouvrir JupyterLab.
-
Dans la page Jupyter Lab, ouvrez un nouveau terminal.
-
Entrez la commande ssh ssh <nom d'utilisateur admin>@<adresse IP du serveur ONTAP> pour vous connecter au système de fichiers ONTAP FSxN. (Le nom d'utilisateur et l'adresse IP sont extraits de l'étape 2)
Veuillez utiliser le mot de passe utilisé lors de la création de la machine virtuelle de stockage. -
Exécutez les commandes dans l'ordre suivant.
Nous utilisons fsxn-ontap comme nom du compartiment privé FSxN S3.
Veuillez utiliser le nom de la machine virtuelle de stockage pour l'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
-
Exécutez les commandes ci-dessous pour récupérer l'adresse IP et les informations d'identification du terminal pour FSxN privé S3.
network interface show -vserver fsxn-svm-demo -lif nfs_smb_management_1 set adv vserver object-store-server user show
-
Conservez l'adresse IP et les informations d'identification du point de terminaison pour une utilisation ultérieure.
Configuration du client
-
Dans l'instance de SageMaker Notebook, créez un nouveau bloc-notes Jupyter.
-
Le code ci-dessous vous permettra de télécharger des fichiers vers un compartiment S3 privé FSxN.
Pour obtenir un exemple de code complet, reportez-vous à cet ordinateur portable.
"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 FSxN IP address>' # Please get this IP address from FSXN # -------- 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 FSxN 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 FSxN 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 FSxN 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']
Ceci conclut l'intégration entre FSxN et l'instance SageMaker.
Liste de contrôle de débogage utile
-
Assurez-vous que l'instance de l'ordinateur portable SageMaker et le système de fichiers FSxN se trouvent dans le même VPC.
-
N'oubliez pas d'exécuter la commande set dev sur ONTAP pour définir le niveau de privilège sur dev.
FAQ (au 27 septembre 2023)
Q: Pourquoi reçois-je l'erreur "une erreur s'est produite (NotImplemented) lors de l'appel de l'opération CreateMultipartUpload : la commande s3 demandée n'est pas implémentée" lors du téléchargement de fichiers vers FSxN ?
R : en tant que compartiment S3 privé, FSxN prend en charge le téléchargement de fichiers jusqu'à 100 Mo. Lors de l'utilisation du protocole S3, les fichiers de plus de 100 Mo sont divisés en blocs de 100 Mo et la fonction 'CreateMultipartUpload' est appelée. Toutefois, la mise en œuvre actuelle de FSxN Private S3 ne prend pas en charge cette fonction.
Q: Pourquoi reçois-je l'erreur "une erreur s'est produite (AccessDenied) lors de l'appel des opérations PutObject: Access denied" lors du téléchargement de fichiers vers FSxN?
R : pour accéder au compartiment S3 privé FSxN à partir d'une instance d'ordinateur portable SageMaker, basculez les informations d'identification AWS sur les informations d'identification FSxN. Cependant, l'octroi d'une autorisation d'écriture à l'instance nécessite une solution de contournement qui implique le montage du compartiment et l'exécution de la commande shell 'chmod' pour modifier les autorisations.
Q : Comment puis-je intégrer le compartiment S3 privé FSxN avec d'autres services SageMaker ML ?
R: Malheureusement, le SDK des services SageMaker ne permet pas de spécifier le noeud final pour le compartiment S3 privé. Par conséquent, FSxN S3 n'est pas compatible avec les services SageMaker tels que Sagemaker Data Wrangler, Sagemaker Clarify, Sagemaker Glue, Sagemaker Athena, Sagemaker AutoML, et autres.