Parte 1 - integrazione di Amazon FSX per NetApp ONTAP (FSX ONTAP) come bucket S3 privato in AWS SageMaker
Questa sezione fornisce una guida alla configurazione di FSX ONTAP come bucket S3 privato tramite AWS SageMaker.
Autore(i):
Jian Jian (Ken), Senior Data & Applied Scientist, NetApp
Introduzione
Utilizzando SageMaker come esempio, questa pagina fornisce istruzioni sulla configurazione di FSX ONTAP come bucket S3 privato.
Per ulteriori informazioni su FSX ONTAP, date un'occhiata a questa presentazione ("Collegamento video")
Guida dell'utente
Creazione server
Creare un'istanza di notebook SageMaker
-
Apri la console AWS. Nel pannello di ricerca, cerca SageMaker e fai clic sul servizio Amazon SageMaker.
-
Aprire istanze notebook nella scheda notebook, fare clic sul pulsante arancione Crea istanza notebook.
-
Nella pagina di creazione, immettere il nome dell'istanza del notebook* espandere il pannello rete lasciare le altre voci predefinite e selezionare un gruppo VPC, sottorete e protezione. (Questa VPC e sottorete verranno utilizzate per creare il file system FSX ONTAP in seguito) fate clic sul pulsante arancione Crea istanza notebook in basso a destra.
Crea un file system FSX ONTAP
-
Apri la console AWS. Nel pannello di ricerca, cercate FSX e fate clic sul servizio FSX.
-
Fare clic su Crea file system.
-
Selezionare la prima scheda FSX ONTAP e fare clic su Avanti.
-
Nella pagina di configurazione dei dettagli.
-
Selezionare l'opzione creazione standard.
-
Immettere il nome del file system e la capacità di archiviazione SSD.
-
Assicurarsi di utilizzare VPC e subnet uguali all'istanza SageMaker notebook.
-
Immettere il nome Storage Virtual Machine e specificare una password per la SVM (Storage Virtual Machine).
-
Lasciare le altre voci predefinite e fare clic sul pulsante arancione Avanti in basso a destra.
-
Fare clic sul pulsante arancione Crea file system in basso a destra nella pagina di revisione.
-
-
L'accelerazione del file system FSX può richiedere circa 20-40 minuti.
Server Configuration (Configurazione server)
Configurazione ONTAP
-
Aprire il file system FSX creato. Assicurarsi che lo stato sia disponibile.
-
Selezionare la scheda Amministrazione e mantenere endpoint di gestione - indirizzo IP e nome utente amministratore ONTAP.
-
Aprire l'istanza creata SageMaker notebook e fare clic su Apri JupyterLab.
-
Nella pagina Jupyter Lab, aprire un nuovo terminale.
-
Inserisci il comando ssh ssh <nome utente admin>@<IP server ONTAP> per accedere al file system FSX ONTAP. (Il nome utente e l'indirizzo IP vengono recuperati dal passaggio 2) utilizzare la password utilizzata per creare la Storage Virtual Machine.
-
Eseguire i comandi nel seguente ordine. Usiamo fsxn-ONTAP come nome per il FSX ONTAP private S3 bucket name. Utilizzare storage virtual machine name per l'argomento -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
-
Eseguire i seguenti comandi per recuperare l'IP dell'endpoint e le credenziali per FSX ONTAP private S3.
network interface show -vserver fsxn-svm-demo -lif nfs_smb_management_1 set adv vserver object-store-server user show
-
Conservare l'IP dell'endpoint e le credenziali per un utilizzo futuro.
Client Configuration (Configurazione client)
-
Nell'istanza di notebook SageMaker, creare un nuovo notebook Jupyter.
-
Utilizza il codice riportato di seguito come soluzione per caricare i file nel bucket S3 privato di FSX ONTAP. Per un esempio di codice completo, fare riferimento a questo notebook. "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']
Si conclude così l'integrazione tra FSX ONTAP e l'istanza di SageMaker.
Utile elenco di controllo per il debug
-
Verificare che l'istanza del notebook SageMaker e il file system FSX ONTAP si trovino nello stesso VPC.
-
Ricordarsi di eseguire il comando set dev su ONTAP per impostare il livello di privilegio su dev.
FAQ (al 27 settembre 2023)
D: Perché viene visualizzato l'errore "si è verificato un errore (NotImplemented) quando si chiama l'operazione CreateMultipartUpload: Il comando S3 richiesto non è implementato" quando si caricano i file in FSX ONTAP?
R: Come bucket S3 privato, FSX ONTAP supporta il caricamento di file fino a 100MB KB. Quando si utilizza il protocollo S3, i file di dimensioni superiori a 100MB KB vengono divisi in 100MB blocchi e viene richiamata la funzione "CreateMultipartUpload". Tuttavia, l'attuale implementazione di FSX ONTAP private S3 non supporta questa funzione.
D: Perché viene visualizzato l'errore "si è verificato un errore (accesso negato) quando si chiamano le operazioni PutObject: Accesso negato" quando si caricano i file in FSX ONTAP?
R: Per accedere al bucket S3 privato FSX ONTAP da un'istanza di notebook SageMaker, passare le credenziali AWS alle credenziali FSX ONTAP. Tuttavia, la concessione del permesso di scrittura all'istanza richiede una soluzione alternativa che implica il montaggio del bucket e l'esecuzione del comando shell 'chmod' per modificare le autorizzazioni.
D: Come posso integrare il bucket S3 privato di FSX ONTAP con altri servizi ML di SageMaker?
R: Purtroppo, SageMaker Services SDK non fornisce un modo per specificare l'endpoint per il bucket S3 privato. Di conseguenza, FSX ONTAP S3 non è compatibile con i servizi SageMaker come Sagemaker Data Wrangler, Sagemaker Clarify, Sagemaker Glue, Sagemaker Athena, Sagemaker AutoML e altri.