1re partie : intégration d'Amazon FSX pour NetApp ONTAP (FSX ONTAP) en tant que compartiment S3 privé dans AWS SageMaker
Cette section fournit un guide sur la configuration de FSX ONTAP en tant que compartiment S3 privé à l'aide d'AWS SageMaker.
Auteur(s):
Jian Jian (Ken), scientifique senior en données et applications, NetApp
Introduction
Utilisation de SageMaker à titre d'exemple, cette page fournit des conseils sur la configuration de FSX ONTAP en tant que compartiment S3 privé.
Pour plus d'informations sur FSX ONTAP, consultez 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 Notebook développez le panneau Network et conservez les autres entrées par défaut et sélectionnez un groupe VPC, Subnet et Security Group(s). (Ce VPC et Subnet seront utilisés ultérieurement pour créer le système de fichiers FSX ONTAP) cliquez sur le bouton orange Créer une instance de bloc-notes en bas à droite.
Créez un système de fichiers FSX ONTAP
-
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 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 FSX ONTAP. (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é FSX ONTAP 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 du terminal et les informations d'identification du serveur privé FSX ONTAP 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 constitue une solution adaptée pour télécharger des fichiers vers un compartiment S3 privé FSX ONTAP. 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 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']
Ceci conclut l'intégration entre FSX ONTAP et l'instance SageMaker.
Liste de contrôle de débogage utile
-
Vérifiez que l'instance de l'ordinateur portable SageMaker et le système de fichiers FSX ONTAP sont 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 FSX ONTAP ?
R : en tant que compartiment S3 privé, FSX ONTAP 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 FSX ONTAP S3 privé 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 FSX ONTAP?
R : pour accéder au compartiment S3 privé FSX ONTAP à partir d'une instance d'ordinateur portable SageMaker, basculez les informations d'identification AWS vers les informations d'identification FSX ONTAP. 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é FSX ONTAP avec d'autres services de ML SageMaker ?
R: Malheureusement, le SDK des services SageMaker ne permet pas de spécifier le noeud final pour le compartiment S3 privé. Par conséquent, FSX ONTAP S3 n'est pas compatible avec les services SageMaker tels que SageMaker Data Wrangler, Sagemaker Clarify, Sagemaker Glue, Sagemaker Athena, Sagemaker AutoML et autres.