(Facoltativo) Migrazione dei dati da Studio Classic a Studio - Amazon SageMaker AI

(Facoltativo) Migrazione dei dati da Studio Classic a Studio

Studio Classic e Studio utilizzano due diversi tipi di volumi di archiviazione. Studio Classic utilizza un singolo volume Amazon Elastic File System (Amazon EFS) per archiviare i dati di tutti gli utenti e gli spazi condivisi nel dominio. In Studio, ogni spazio ha il proprio volume Amazon Elastic Block Store (Amazon EBS). Quando aggiorni l’esperienza predefinita di un dominio esistente, SageMaker AI monta automaticamente una cartella in un volume Amazon EFS per ogni utente in un dominio. Di conseguenza, gli utenti possono accedere ai file da Studio Classic nelle proprie applicazioni Studio. Per ulteriori informazioni, consulta Montaggio automatico di Amazon EFS in Studio.

Puoi anche non aderire al montaggio automatico di Amazon EFS ed eseguire la migrazione manuale dei dati per consentire agli utenti di accedere ai file da Studio Classic nelle applicazioni Studio. Per farlo, devi trasferire i file dalle home directory degli utenti ai volumi Amazon EBS associati a tali spazi. La sezione seguente fornisce informazioni su questo flusso di lavoro. Per ulteriori informazioni sulla non adesione al montaggio automatico di Amazon EFS, consulta Scelta dell’opzione di non adesione al montaggio automatico di Amazon EFS.

Migrazione manuale di tutti i dati da Studio Classic

La sezione seguente descrive come eseguire la migrazione di tutti i dati dal volume di archiviazione di Studio Classic alla nuova esperienza Studio.

Durante la migrazione manuale di dati, codice e artefatti di un utente da Studio Classic a Studio, suggeriamo di utilizzare uno dei seguenti approcci:

  1. Utilizzo di un volume Amazon EFS personalizzato

  2. Utilizzo di Amazon Simple Storage Service (Amazon S3)

Se hai utilizzato Amazon SageMaker Data Wrangler in Studio Classic e desideri eseguire la migrazione dei file del flusso di dati, scegli una delle opzioni di migrazione seguenti:

  • Se desideri eseguire la migrazione di tutti i dati dal volume di archiviazione di Studio Classic, inclusi i file del flusso di dati, consulta Migrazione manuale di tutti i dati da Studio Classic e segui le istruzioni nella sezione Utilizzo di Amazon S3 per eseguire la migrazione dei dati. Quindi, passa alla sezione Importazione dei file del flusso in Canvas.

  • Se desideri eseguire la migrazione dei soli file del flusso di dati, senza includere gli altri dati del volume di archiviazione di Studio Classic, vai alla sezione Migrazione dei flussi di dati da Data Wrangler.

Prerequisiti

Prima di eseguire questa procedura, completa i prerequisiti descritti in Completamento dei prerequisiti per la migrazione dell’esperienza di Studio. Devi anche completare le fasi indicate in Migrazione dell’interfaccia utente da Studio Classic a Studio.

Scelta di un approccio

Considera quanto segue quando scegli un approccio per la migrazione dei dati di Studio Classic.

Pro e contro dell’utilizzo di un volume Amazon EFS personalizzato

In questo approccio, utilizzi un’attività AWS DataSync da Amazon EFS ad Amazon EFS (una tantum o a cadenza regolare) per copiare i dati, quindi monti il volume Amazon EFS di destinazione negli spazi di un utente. In questo modo, gli utenti possono accedere ai dati di Studio Classic nei propri ambienti di calcolo Studio.

Pro:

  • Negli spazi dell’utente sono visibili solo i dati della home directory dell’utente. Non si verifica alcun incrocio dei dati.

  • La sincronizzazione dal volume Amazon EFS di origine a un volume Amazon EFS di destinazione è più sicura rispetto al montaggio diretto del volume Amazon EFS di origine gestito da SageMaker AI negli spazi. In questo modo si evita il potenziale impatto sui file dell’utente nella home directory.

  • Gli utenti hanno la flessibilità di continuare a lavorare nelle applicazioni Studio Classic e Studio, oltre ad avere i dati disponibili in entrambe le applicazioni se AWS DataSync è configurato a cadenza regolare.

  • Non è necessario ripetere le operazioni di push and pull con Amazon S3.

Contro:

  • Nessun accesso in scrittura al volume Amazon EFS di destinazione montato negli spazi dell’utente. Per ottenere l’accesso in scrittura al volume Amazon EFS di destinazione, i clienti devono montare il volume Amazon EFS di destinazione su un’istanza Amazon Elastic Compute Cloud e fornire agli utenti le autorizzazioni appropriate per scrivere nel prefisso Amazon EFS.

  • Richiede la modifica dei gruppi di sicurezza gestiti da SageMaker AI per consentire il flusso in entrata e in uscita del file system di rete (NFS).

  • Costa di più rispetto all’utilizzo di Amazon S3.

  • Se stai eseguendo la migrazione dei flussi di dati da Data Wrangler a Studio Classic, devi seguire la procedura per esportare manualmente i file del flusso.

Pro e contro dell’utilizzo di Amazon S3

In questo approccio, utilizzi un’attività AWS DataSync da Amazon EFS ad Amazon S3 (una tantum o a cadenza regolare) per copiare i dati, quindi crei una configurazione del ciclo di vita per copiare i dati dell’utente da Amazon S3 al volume Amazon EBS nel suo spazio privato.

Pro:

  • Se la LCC è collegata al dominio, gli utenti possono scegliere di utilizzarla per copiare i dati nel proprio spazio o di eseguire lo spazio senza script LCC. In questo modo gli utenti possono scegliere di copiare i propri file solo negli spazi necessari.

  • Se un’attività AWS DataSync è impostata a cadenza regolare, gli utenti possono riavviare l’applicazione Studio per ottenere i file più recenti.

  • Poiché i dati vengono copiati su Amazon EBS, gli utenti dispongono delle autorizzazioni di scrittura sui file.

  • L’archiviazione Amazon S3 è più conveniente di Amazon EFS.

  • Se stai eseguendo la migrazione dei flussi di dati da Data Wrangler a Studio Classic, puoi saltare la procedura di esportazione manuale e importare direttamente i flussi di dati da Amazon S3 a SageMaker Canvas.

Contro:

  • Per prevenire l’incrocio di dati, gli amministratori devono creare policy AWS Identity and Access Management a livello di utente per garantire che gli utenti possano accedere solo al prefisso Amazon S3 che contiene i loro file.

In questo approccio, utilizzi un volume AWS DataSync da Amazon EFS ad Amazon EFS per copiare il contenuto di un volume Amazon EFS di Studio Classic in un volume Amazon EFS di destinazione una tantum o a cadenza regolare, quindi monti il volume Amazon EFS di destinazione negli spazi di un utente. In questo modo, gli utenti possono accedere ai dati di Studio Classic nei propri ambienti di calcolo Studio.

  1. Crea un volume Amazon EFS di destinazione. Per trasferire i dati in questo volume Amazon EFS e montarlo nello spazio dell’utente corrispondente, utilizza il montaggio a livello di prefisso.

    export SOURCE_DOMAIN_ID="domain-id" export REGION="region" export TARGET_EFS=$(aws efs create-file-system --performance-mode generalPurpose --throughput-mode bursting --encrypted --region $REGION | jq -r '.FileSystemId') echo "Target EFS volume Created: $TARGET_EFS"
  2. Aggiungi le variabili per il volume Amazon EFS di origine attualmente collegato al dominio e utilizzato da tutti gli utenti. Le informazioni su Amazon Virtual Private Cloud del dominio sono necessarie per garantire che Amazon EFS di destinazione venga creato nello stesso Amazon VPC, nella stessa sottorete e con la stessa configurazione del gruppo di sicurezza.

    export SOURCE_EFS=$(aws sagemaker describe-domain --domain-id $SOURCE_DOMAIN_ID | jq -r '.HomeEfsFileSystemId') export VPC_ID=$(aws sagemaker describe-domain --domain-id $SOURCE_DOMAIN_ID | jq -r '.VpcId') echo "EFS managed by SageMaker: $SOURCE_EFS | VPC: $VPC_ID"
  3. Crea una destinazione di montaggio Amazon EFS nello stesso Amazon VPC e nella stessa sottorete Amazon del volume Amazon EFS di origine, con la stessa configurazione del gruppo di sicurezza. La destinazione di montaggio diventa disponibile dopo alcuni minuti.

    export EFS_VPC_ID=$(aws efs describe-mount-targets --file-system-id $SOURCE_EFS | jq -r ".MountTargets[0].VpcId") export EFS_AZ_NAME=$(aws efs describe-mount-targets --file-system-id $SOURCE_EFS | jq -r ".MountTargets[0].AvailabilityZoneName") export EFS_AZ_ID=$(aws efs describe-mount-targets --file-system-id $SOURCE_EFS | jq -r ".MountTargets[0].AvailabilityZoneId") export EFS_SUBNET_ID=$(aws efs describe-mount-targets --file-system-id $SOURCE_EFS | jq -r ".MountTargets[0].SubnetId") export EFS_MOUNT_TARG_ID=$(aws efs describe-mount-targets --file-system-id $SOURCE_EFS | jq -r ".MountTargets[0].MountTargetId") export EFS_SG_IDS=$(aws efs describe-mount-target-security-groups --mount-target-id $EFS_MOUNT_TARG_ID | jq -r '.SecurityGroups[]') aws efs create-mount-target \ --file-system-id $TARGET_EFS \ --subnet-id $EFS_SUBNET_ID \ --security-groups $EFS_SG_IDS
  4. Crea posizioni di origine e di destinazione di Amazon EFS per l’attività AWS DataSync.

    export SOURCE_EFS_ARN=$(aws efs describe-file-systems --file-system-id $SOURCE_EFS | jq -r ".FileSystems[0].FileSystemArn") export TARGET_EFS_ARN=$(aws efs describe-file-systems --file-system-id $TARGET_EFS | jq -r ".FileSystems[0].FileSystemArn") export EFS_SUBNET_ID_ARN=$(aws ec2 describe-subnets --subnet-ids $EFS_SUBNET_ID | jq -r ".Subnets[0].SubnetArn") export ACCOUNT_ID=$(aws ec2 describe-security-groups --group-id $EFS_SG_IDS | jq -r ".SecurityGroups[0].OwnerId") export EFS_SG_ID_ARN=arn:aws:ec2:$REGION:$ACCOUNT_ID:security-group/$EFS_SG_IDS export SOURCE_LOCATION_ARN=$(aws datasync create-location-efs --subdirectory "/" --efs-filesystem-arn $SOURCE_EFS_ARN --ec2-config SubnetArn=$EFS_SUBNET_ID_ARN,SecurityGroupArns=$EFS_SG_ID_ARN --region $REGION | jq -r ".LocationArn") export DESTINATION_LOCATION_ARN=$(aws datasync create-location-efs --subdirectory "/" --efs-filesystem-arn $TARGET_EFS_ARN --ec2-config SubnetArn=$EFS_SUBNET_ID_ARN,SecurityGroupArns=$EFS_SG_ID_ARN --region $REGION | jq -r ".LocationArn")
  5. Consenti il traffico tra i montaggi del file system di rete (NFS) di origine e di destinazione. Quando viene creato un nuovo dominio, SageMaker AI crea due gruppi di sicurezza.

    • Gruppo di sicurezza NFS in entrata con solo traffico in entrata.

    • Gruppo di sicurezza NFS in uscita con solo traffico in uscita.

    Il file system di rete di origine e quello di destinazione si trovano all’interno degli stessi gruppi di sicurezza. Puoi consentire il traffico tra questi montaggi dalla Console di gestione AWS o dalla AWS CLI.

    • Consenti il traffico proveniente dalla Console di gestione AWS.

      1. Accedi alla Console di gestione AWS e apri la console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

      2. Scegli i Security Groups (Gruppi di sicurezza).

      3. Cerca l’ID del dominio esistente nella pagina Gruppi di sicurezza.

        d-xxxxxxx

        I risultati dovrebbero restituire due gruppi di sicurezza che includono l’ID dominio nel nome.

        • security-group-for-inbound-nfs-domain-id

        • security-group-for-outbound-nfs-domain-id

      4. Seleziona l’ID del gruppo di sicurezza in entrata. Viene aperta una nuova pagina con i dettagli sul gruppo di sicurezza.

      5. Seleziona la scheda Regole in uscita.

      6. Scegli Modifica le regole in uscita.

      7. Aggiorna le regole in uscita esistenti o aggiungi una nuova regola in uscita con i valori seguenti:

        • Type (Tipo): NFS

        • Protocollo: TCP

        • Intervallo porte: 2049

        • Destinazione: security-group-for-outbound-nfs-domain-id | security-group-id

      8. Scegliere Salva regole.

      9. Seleziona la scheda Regole in entrata.

      10. Scegli Modifica le regole in entrata.

      11. Aggiorna le regole in entrata esistenti o aggiungi una nuova regola in uscita con i valori seguenti:

        • Type (Tipo): NFS

        • Protocollo: TCP

        • Intervallo porte: 2049

        • Destinazione: security-group-for-outbound-nfs-domain-id | security-group-id

      12. Scegliere Salva regole.

    • Consenti il traffico proveniente dalla AWS CLI.

      1. Aggiorna le regole in entrata e in uscita del gruppo di sicurezza con i valori seguenti:

        • Protocollo: TCP

        • Intervallo porte: 2049

        • ID gruppo: ID del gruppo di sicurezza in entrata o ID del gruppo di sicurezza in uscita

        export INBOUND_SG_ID=$(aws ec2 describe-security-groups --filters "Name=group-name,Values=security-group-for-inbound-nfs-$SOURCE_DOMAIN_ID" | jq -r ".SecurityGroups[0].GroupId") export OUTBOUND_SG_ID=$(aws ec2 describe-security-groups --filters "Name=group-name,Values=security-group-for-outbound-nfs-$SOURCE_DOMAIN_ID" | jq -r ".SecurityGroups[0].GroupId") echo "Outbound SG ID: $OUTBOUND_SG_ID | Inbound SG ID: $INBOUND_SG_ID" aws ec2 authorize-security-group-egress \ --group-id $INBOUND_SG_ID \ --protocol tcp --port 2049 \ --source-group $OUTBOUND_SG_ID aws ec2 authorize-security-group-ingress \ --group-id $OUTBOUND_SG_ID \ --protocol tcp --port 2049 \ --source-group $INBOUND_SG_ID
      2. Aggiungi i gruppi di sicurezza in entrata e in uscita alle destinazioni di montaggio Amazon EFS di origine e di destinazione. In questo modo, si consente il traffico tra i due montaggi Amazon EFS.

        export SOURCE_EFS_MOUNT_TARGET=$(aws efs describe-mount-targets --file-system-id $SOURCE_EFS | jq -r ".MountTargets[0].MountTargetId") export TARGET_EFS_MOUNT_TARGET=$(aws efs describe-mount-targets --file-system-id $TARGET_EFS | jq -r ".MountTargets[0].MountTargetId") aws efs modify-mount-target-security-groups \ --mount-target-id $SOURCE_EFS_MOUNT_TARGET \ --security-groups $INBOUND_SG_ID $OUTBOUND_SG_ID aws efs modify-mount-target-security-groups \ --mount-target-id $TARGET_EFS_MOUNT_TARGET \ --security-groups $INBOUND_SG_ID $OUTBOUND_SG_ID
  6. Crea un’attività AWS DataSync. Viene restituito un ARN dell’attività che può essere utilizzato per eseguire l’attività on demand o a cadenza regolare.

    export EXTRA_XFER_OPTIONS='VerifyMode=ONLY_FILES_TRANSFERRED,OverwriteMode=ALWAYS,Atime=NONE,Mtime=NONE,Uid=NONE,Gid=NONE,PreserveDeletedFiles=REMOVE,PreserveDevices=NONE,PosixPermissions=NONE,TaskQueueing=ENABLED,TransferMode=CHANGED,SecurityDescriptorCopyFlags=NONE,ObjectTags=NONE' export DATASYNC_TASK_ARN=$(aws datasync create-task --source-location-arn $SOURCE_LOCATION_ARN --destination-location-arn $DESTINATION_LOCATION_ARN --name "SMEFS_to_CustomEFS_Sync" --region $REGION --options $EXTRA_XFER_OPTIONS | jq -r ".TaskArn")
  7. Avvia un’attività AWS DataSync per copiare automaticamente i dati dal montaggio Amazon EFS di origine al montaggio Amazon EFS di destinazione. Non vengono mantenute le autorizzazioni POSIX del file, quindi gli utenti possono leggere, ma non scrivere, nel montaggio Amazon EFS di destinazione.

    aws datasync start-task-execution --task-arn $DATASYNC_TASK_ARN
  8. Monta il volume Amazon EFS di destinazione sul dominio a livello root.

    aws sagemaker update-domain --domain-id $SOURCE_DOMAIN_ID \ --default-user-settings '{"CustomFileSystemConfigs": [{"EFSFileSystemConfig": {"FileSystemId": "'"$TARGET_EFS"'", "FileSystemPath": "/"}}]}'
  9. Sovrascrivi ogni profilo utente con un prefisso FileSystemPath. Il prefisso include l’UID dell’utente, creato da SageMaker AI. In questo modo, gli utenti possono accedere solo ai propri dati, evitando eventuali incroci. Quando viene creato uno spazio nel dominio e il volume Amazon EFS di destinazione viene montato sull’applicazione, il prefisso dell’utente sovrascrive il prefisso del dominio. Di conseguenza, SageMaker AI monta la directory /user-id solo sull’applicazione dell’utente.

    aws sagemaker list-user-profiles --domain-id $SOURCE_DOMAIN_ID | jq -r '.UserProfiles[] | "\(.UserProfileName)"' | while read user; do export uid=$(aws sagemaker describe-user-profile --domain-id $SOURCE_DOMAIN_ID --user-profile-name $user | jq -r ".HomeEfsFileSystemUid") echo "$user $uid" aws sagemaker update-user-profile --domain-id $SOURCE_DOMAIN_ID --user-profile-name $user --user-settings '{"CustomFileSystemConfigs": [{"EFSFileSystemConfig":{"FileSystemId": "'"$TARGET_EFS"'", "FileSystemPath": "'"/$uid/"'"}}]}' done
  10. Gli utenti possono quindi selezionare il file system Amazon EFS personalizzato all’avvio di un’applicazione. Per ulteriori informazioni, consulta Guida per l’utente di JupyterLab o Avvio di un’applicazione Editor di codice in Studio.

In questo approccio, utilizzi un’attività AWS DataSync da Amazon EFS ad Amazon S3 per copiare il contenuto di un volume Amazon EFS di Studio Classic in un bucket Amazon S3 una tantum o a cadenza regolare, quindi crei una configurazione del ciclo di vita per copiare i dati dell’utente da Amazon S3 al volume Amazon EBS del suo spazio privato.

Nota

Questo approccio funziona solo per i domini con accesso a Internet.

  1. Imposta l’ID del volume Amazon EFS di origine dal dominio che contiene i dati di cui stai eseguendo la migrazione.

    timestamp=$(date +%Y%m%d%H%M%S) export SOURCE_DOMAIN_ID="domain-id" export REGION="region" export ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) export EFS_ID=$(aws sagemaker describe-domain --domain-id $SOURCE_DOMAIN_ID | jq -r '.HomeEfsFileSystemId')
  2. Imposta il nome del bucket Amazon S3 di destinazione. Per informazioni sulla creazione di un bucket Amazon S3, consulta Creating a bucket. Il bucket utilizzato deve avere una policy CORS come descritto in (Facoltativo) Aggiornamento della policy CORS per accedere ai bucket Amazon S3. Gli utenti del dominio devono disporre anche delle autorizzazioni per accedere al bucket Amazon S3.

    In questo esempio, stiamo copiando i file in un prefisso denominato studio-new. Se utilizzi un singolo bucket Amazon S3 per eseguire la migrazione di più domini, utilizza il prefisso studio-new/<domain-id> per limitare le autorizzazioni ai file tramite IAM.

    export BUCKET_NAME=s3-bucket-name export S3_DESTINATION_PATH=studio-new
  3. Crea una policy di attendibilità che conceda a AWS DataSync le autorizzazioni per assumere il ruolo di esecuzione del tuo account.

    export TRUST_POLICY=$(cat <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "$ACCOUNT_ID" }, "ArnLike": { "aws:SourceArn": "arn:aws:datasync:$REGION:$ACCOUNT_ID:*" } } } ] } EOF )
  4. Crea un ruolo IAM e collega la policy.

    export timestamp=$(date +%Y%m%d%H%M%S) export ROLE_NAME="DataSyncS3Role-$timestamp" aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document "$TRUST_POLICY" aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess echo "Attached IAM Policy AmazonS3FullAccess" aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess echo "Attached IAM Policy AmazonSageMakerFullAccess" export ROLE_ARN=$(aws iam get-role --role-name $ROLE_NAME --query 'Role.Arn' --output text) echo "Created IAM Role $ROLE_ARN"
  5. Crea un gruppo di sicurezza per consentire l’accesso alla posizione Amazon EFS.

    export EFS_ARN=$(aws efs describe-file-systems --file-system-id $EFS_ID | jq -r '.FileSystems[0].FileSystemArn' ) export EFS_SUBNET_ID=$(aws efs describe-mount-targets --file-system-id $EFS_ID | jq -r '.MountTargets[0].SubnetId') export EFS_VPC_ID=$(aws efs describe-mount-targets --file-system-id $EFS_ID | jq -r '.MountTargets[0].VpcId') export MOUNT_TARGET_ID=$(aws efs describe-mount-targets --file-system-id $EFS_ID | jq -r '.MountTargets[0].MountTargetId ') export EFS_SECURITY_GROUP_ID=$(aws efs describe-mount-target-security-groups --mount-target-id $MOUNT_TARGET_ID | jq -r '.SecurityGroups[0]') export EFS_SUBNET_ARN=$(aws ec2 describe-subnets --subnet-ids $EFS_SUBNET_ID | jq -r '.Subnets[0].SubnetArn') echo "Subnet ID: $EFS_SUBNET_ID" echo "Security Group ID: $EFS_SECURITY_GROUP_ID" echo "Subnet ARN: $EFS_SUBNET_ARN" timestamp=$(date +%Y%m%d%H%M%S) sg_name="datasync-sg-$timestamp" export DATASYNC_SG_ID=$(aws ec2 create-security-group --vpc-id $EFS_VPC_ID --group-name $sg_name --description "DataSync SG" --output text --query 'GroupId') aws ec2 authorize-security-group-egress --group-id $DATASYNC_SG_ID --protocol tcp --port 2049 --source-group $EFS_SECURITY_GROUP_ID aws ec2 authorize-security-group-ingress --group-id $EFS_SECURITY_GROUP_ID --protocol tcp --port 2049 --source-group $DATASYNC_SG_ID export DATASYNC_SG_ARN="arn:aws:ec2:$REGION:$ACCOUNT_ID:security-group/$DATASYNC_SG_ID" echo "Security Group ARN: $DATASYNC_SG_ARN"
  6. Crea una posizione Amazon EFS di origine per l’attività AWS DataSync.

    export SOURCE_ARN=$(aws datasync create-location-efs --efs-filesystem-arn $EFS_ARN --ec2-config "{\"SubnetArn\": \"$EFS_SUBNET_ARN\", \"SecurityGroupArns\": [\"$DATASYNC_SG_ARN\"]}" | jq -r '.LocationArn') echo "Source Location ARN: $SOURCE_ARN"
  7. Crea una posizione Amazon S3 di destinazione per l’attività AWS DataSync.

    export BUCKET_ARN="arn:aws:s3:::$BUCKET_NAME" export DESTINATION_ARN=$(aws datasync create-location-s3 --s3-bucket-arn $BUCKET_ARN --s3-config "{\"BucketAccessRoleArn\": \"$ROLE_ARN\"}" --subdirectory $S3_DESTINATION_PATH | jq -r '.LocationArn') echo "Destination Location ARN: $DESTINATION_ARN"
  8. Crea un’attività AWS DataSync.

    export TASK_ARN=$(aws datasync create-task --source-location-arn $SOURCE_ARN --destination-location-arn $DESTINATION_ARN | jq -r '.TaskArn') echo "DataSync Task: $TASK_ARN"
  9. Avvia l’attività AWS DataSync. Questa attività copia automaticamente i dati dal volume Amazon EFS di origine al bucket Amazon S3 di destinazione. Attendi il completamento dell’attività.

    aws datasync start-task-execution --task-arn $TASK_ARN
  10. Controlla lo stato dell’attività AWS DataSync per verificarne il completamento. Passa l’ARN restituito nella fase precedente.

    export TASK_EXEC_ARN=datasync-task-arn echo "Task execution ARN: $TASK_EXEC_ARN" export STATUS=$(aws datasync describe-task-execution --task-execution-arn $TASK_EXEC_ARN | jq -r '.Status') echo "Execution status: $STATUS" while [ "$STATUS" = "QUEUED" ] || [ "$STATUS" = "LAUNCHING" ] || [ "$STATUS" = "PREPARING" ] || [ "$STATUS" = "TRANSFERRING" ] || [ "$STATUS" = "VERIFYING" ]; do STATUS=$(aws datasync describe-task-execution --task-execution-arn $TASK_EXEC_ARN | jq -r '.Status') if [ $? -ne 0 ]; then echo "Error Running DataSync Task" exit 1 fi echo "Execution status: $STATUS" sleep 30 done
  11. Una volta completata l’attività AWS DataSync, pulisci le risorse create in precedenza.

    aws datasync delete-task --task-arn $TASK_ARN echo "Deleted task $TASK_ARN" aws datasync delete-location --location-arn $SOURCE_ARN echo "Deleted location source $SOURCE_ARN" aws datasync delete-location --location-arn $DESTINATION_ARN echo "Deleted location source $DESTINATION_ARN" aws iam detach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess aws iam detach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess aws iam delete-role --role-name $ROLE_NAME echo "Deleted IAM Role $ROLE_NAME" echo "Wait 5 minutes for the elastic network interface to detach..." start_time=$(date +%s) while [[ $(($(date +%s) - start_time)) -lt 300 ]]; do sleep 1 done aws ec2 revoke-security-group-ingress --group-id $EFS_SECURITY_GROUP_ID --protocol tcp --port 2049 --source-group $DATASYNC_SG_ID echo "Revoked Ingress from $EFS_SECURITY_GROUP_ID" aws ec2 revoke-security-group-egress --group-id $DATASYNC_SG_ID --protocol tcp --port 2049 --source-group $EFS_SECURITY_GROUP_ID echo "Revoked Egress from $DATASYNC_SG_ID" aws ec2 delete-security-group --group-id $DATASYNC_SG_ID echo "Deleted DataSync SG $DATASYNC_SG_ID"
  12. Dal tuo computer locale, crea un file locale denominato on-start.sh con il seguente contenuto. Questo script copia la home directory Amazon EFS dell’utente in Amazon S3 nel volume Amazon EBS dell’utente in Studio e crea un prefisso per ogni profilo utente.

    #!/bin/bash set -eo pipefail sudo apt-get install -y jq # Studio Variables DOMAIN_ID=$(cat /opt/ml/metadata/resource-metadata.json | jq -r '.DomainId') SPACE_NAME=$(cat /opt/ml/metadata/resource-metadata.json | jq -r '.SpaceName') USER_PROFILE_NAME=$(aws sagemaker describe-space --domain-id=$DOMAIN_ID --space-name=$SPACE_NAME | jq -r '.OwnershipSettings.OwnerUserProfileName') # S3 bucket to copy from BUCKET=s3-bucket-name # Subfolder in bucket to copy PREFIX=studio-new # Getting HomeEfsFileSystemUid for the current user-profile EFS_FOLDER_ID=$(aws sagemaker describe-user-profile --domain-id $DOMAIN_ID --user-profile-name $USER_PROFILE_NAME | jq -r '.HomeEfsFileSystemUid') # Local destination directory DEST=./studio-classic-efs-backup mkdir -p $DEST echo "Bucket: s3://$BUCKET/$PREFIX/$EFS_FOLDER_ID/" echo "Destination $DEST/" echo "Excluding .*" echo "Excluding .*/*" aws s3 cp s3://$BUCKET/$PREFIX/$EFS_FOLDER_ID/ $DEST/ \ --exclude ".*" \ --exclude "**/.*" \ --recursive
  13. Converti lo script nel formato base64. Questo requisito previene gli errori dovuti alla codifica della spaziatura e delle interruzioni di riga. Il tipo di script può essere JupyterLab o CodeEditor.

    export LCC_SCRIPT_NAME='studio-classic-sync' export SCRIPT_FILE_NAME='on-start.sh' export SCRIPT_TYPE='JupyterLab-or-CodeEditor' LCC_CONTENT=`openssl base64 -A -in ${SCRIPT_FILE_NAME}`
  14. Verifica quanto segue prima di utilizzare lo script:

    • Il volume Amazon EBS è sufficientemente grande per archiviare gli oggetti che stai esportando.

    • Se non è tua intenzione, non stai eseguendo la migrazione di file e cartelle nascosti, ad esempio .bashrc e .condarc.

    • Le policy del ruolo di esecuzione AWS Identity and Access Management (IAM) associato ai profili utente di Studio sono configurate per accedere solo alla rispettiva home directory in Amazon S3.

  15. Crea una configurazione del ciclo di vita utilizzando lo script.

    aws sagemaker create-studio-lifecycle-config \ --studio-lifecycle-config-name $LCC_SCRIPT_NAME \ --studio-lifecycle-config-content $LCC_CONTENT \ --studio-lifecycle-config-app-type $SCRIPT_TYPE
  16. Collega la LCC al dominio.

    aws sagemaker update-domain \ --domain-id $SOURCE_DOMAIN_ID \ --default-user-settings ' {"JupyterLabAppSettings": {"LifecycleConfigArns": [ "lifecycle-config-arn" ] } }'
  17. Gli utenti possono quindi selezionare lo script LCC all’avvio di un’applicazione. Per ulteriori informazioni, consulta Guida per l’utente di JupyterLab o Avvio di un’applicazione Editor di codice in Studio. Questo sincronizza automaticamente i file da Amazon S3 all’archiviazione Amazon EBS per lo spazio dell’utente.

Migrazione dei flussi di dati da Data Wrangler

Se in precedenza hai utilizzato Amazon SageMaker Data Wrangler in Amazon SageMaker Studio Classic per le attività di preparazione dei dati, puoi eseguire la migrazione al nuovo Amazon SageMaker Studio e accedere alla versione più recente di Data Wrangler in Amazon SageMaker Canvas. Data Wrangler in SageMaker Canvas offre un’esperienza utente migliorata e l’accesso alle funzionalità più recenti, come un’interfaccia in linguaggio naturale e prestazioni più veloci.

Puoi accedere a SageMaker Canvas in qualsiasi momento per iniziare a utilizzare la nuova esperienza Data Wrangler. Per ulteriori informazioni, consulta Nozioni di base su un'istanza Amazon SageMaker Canvas.

Se hai salvato in Studio Classic file del flusso di dati su cui stavi lavorando, puoi effettuare l’onboarding in Studio e quindi importare i file del flusso in Canvas. Per la migrazione sono disponibili le opzioni seguenti:

  • Migrazione con un solo clic: quando accedi a Canvas, puoi utilizzare l’opzione di importazione una tantum che esegue automaticamente la migrazione di tutti i file del flusso.

  • Migrazione manuale: puoi importare manualmente i file del flusso in Canvas. Da Studio Classic, esporta i file su Amazon S3 o scaricali sul tuo computer locale. Quindi, accedi all’applicazione SageMaker Canvas, importa i file del flusso e continua le attività di preparazione dei dati.

La guida seguente descrive i prerequisiti per la migrazione e fornisce indicazioni su come eseguire la migrazione dei file del flusso di dati utilizzando l’opzione manuale o con un solo clic.

Prerequisiti

Verifica i prerequisiti seguenti prima di iniziare la migrazione dei file del flusso.

Fase 1: Migrazione del dominio e concessione delle autorizzazioni

Prima di eseguire la migrazione dei file del flusso di dati, devi seguire le fasi specifiche della guida Migrazione da Amazon SageMaker Studio Classic per verificare che il ruolo di esecuzione AWS IAM del tuo profilo utente disponga delle autorizzazioni richieste. Prima di procedere, segui le indicazioni nella sezione dei prerequisiti e in Migrazione dell’interfaccia utente da Studio Classic a Studio, che descrivono come concedere le autorizzazioni richieste, configurare Studio come nuova esperienza ed eseguire la migrazione del dominio esistente.

In particolare, devi avere le autorizzazioni per creare un’applicazione SageMaker Canvas e utilizzare le funzionalità di preparazione dei dati SageMaker Canvas. Per ottenere queste autorizzazioni, puoi:

Assicurati di utilizzare lo stesso profilo utente sia per Studio che per SageMaker Canvas.

Dopo aver completato i prerequisiti indicati nella guida alla migrazione, devi disporre di un nuovo dominio con le autorizzazioni necessarie per accedere a SageMaker Canvas tramite Studio.

Fase 2. (Facoltativo) Preparazione di una posizione Amazon S3

Se stai eseguendo una migrazione manuale e prevedi di utilizzare Amazon S3 invece dell’opzione di download locale, per trasferire i file del flusso, nell’account deve essere disponibile un bucket Amazon S3 in cui archiviare i file del flusso.

Metodo di migrazione con un solo clic

SageMaker Canvas offre un’opzione di importazione una tantum per la migrazione dei flussi di dati da Data Wrangler in Studio Classic a Data Wrangler in SageMaker Canvas. Se le applicazioni Studio Classic e Canvas condividono lo stesso volume di archiviazione Amazon EFS, puoi eseguire la migrazione con un clic da Canvas. Questo processo semplificato elimina i passaggi manuali di esportazione e importazione e consente di importare tutti i flussi contemporaneamente.

Utilizza questa procedura per eseguire la migrazione di tutti i file del flusso:

  1. Apri la versione più recente di Studio.

  2. In Studio, nel riquadro di navigazione a sinistra, scegli il menu a discesa Dati.

  3. Dalle opzioni di navigazione, scegli Data Wrangler.

  4. Nella pagina Data Wrangler, scegli Esegui in Canvas. Se hai impostato correttamente le autorizzazioni, verrà creata automaticamente un’applicazione Canvas. Potrebbero essere necessari alcuni minuti prima che l’applicazione Canvas sia pronta.

  5. Quando Canvas è pronta, scegli Apri in Canvas.

  6. Canvas si apre sulla pagina Data Wrangler e nella parte superiore della pagina viene visualizzato un banner con il messaggio Importa i flussi di dati da Data Wrangler in Studio Classic a Canvas. Si tratta di un’importazione una tantum. Ulteriori informazioni. Nel banner, scegli Importa tutto.

    avvertimento

    Se chiudi la notifica del banner, non potrai più riaprirla, né utilizzare il metodo di migrazione con un solo clic.

Viene visualizzata una notifica pop-up che indica che Canvas sta importando i file del flusso da Studio Classic. Se l’importazione ha esito positivo, riceverai un’altra notifica che indica che sono stati importati X file del flusso, che possono essere visualizzati nella pagina Data Wrangler dell’applicazione Canvas. Tutti i file del flusso importati che hanno lo stesso nome dei flussi di dati esistenti nell’applicazione Canvas vengono rinominati con un suffisso. Puoi aprire un flusso di dati per verificare che abbia l’aspetto previsto.

Nel caso in cui uno dei file del flusso non venga importato correttamente, riceverai una notifica che indica che l’importazione è riuscita solo parzialmente o non è riuscita. Scegli Visualizza errori nel messaggio di notifica per controllare i singoli messaggi di errore e ottenere indicazioni su come riformattare gli eventuali file del flusso formattati in modo errato.

Una volta importati i file del flusso, dovresti essere in grado di continuare a utilizzare Data Wrangler per preparare i dati in SageMaker Canvas.

Metodo di migrazione manuale

Le sezioni seguenti descrivono come importare manualmente i file del flusso in Canvas nel caso in cui il metodo di migrazione con un solo clic non abbia funzionato.

Esportazione dei file del flusso da Studio Classic

Nota

Se hai già eseguito la migrazione dei dati di Studio Classic ad Amazon S3 seguendo le istruzioni riportate in (Facoltativo) Migrazione dei dati da Studio Classic a Studio, puoi saltare questa fase e andare direttamente alla sezione Importazione dei file del flusso in Canvas, nella quale importi i file del flusso dalla posizione Amazon S3 in cui sono archiviati i dati di Studio Classic.

Puoi esportare i file del flusso salvandoli su Amazon S3 o scaricandoli sul tuo computer locale. Quando importi i file del flusso in SageMaker Canvas nella fase successiva, se scegli l’opzione di caricamento locale, puoi caricare solo 20 file del flusso alla volta. Se devi importare un alto numero di file del flusso, ti raccomandiamo di utilizzare Amazon S3.

Segui le istruzioni riportate in Metodo 1: utilizzare Amazon S3 per trasferire i file del flusso o Metodo 2: utilizzare il computer locale per trasferire i file del flusso per procedere.

Metodo 1: utilizzare Amazon S3 per trasferire i file del flusso

Con questo metodo, utilizzi Amazon S3 come intermediario tra Data Wrangler in Studio Classic e Data Wrangler in SageMaker Canvas (accessibile dall’ultima versione di Studio). Esporti i file del flusso da Studio Classic ad Amazon S3 e quindi, nella fase successiva, accedi a Canvas tramite Studio e importi i file del flusso da Amazon S3.

Assicurati che un bucket Amazon S3 sia disponibile come posizione di archiviazione per i file del flusso.

Utilizza la procedura seguente per esportare i file del flusso da Studio Classic ad Amazon S3:

  1. Apri Studio Classic.

  2. Apri un nuovo terminale con la procedura seguente:

    1. Nella barra di navigazione in alto, seleziona File.

    2. Nel menu contestuale, passa il mouse su Nuovo, quindi seleziona Terminale.

  3. Per impostazione predefinita, il terminale dovrebbe aprirsi nella home directory. Accedi alla cartella che contiene tutti i file del flusso di cui eseguire la migrazione.

  4. Utilizza il comando seguente per sincronizzare tutti i file del flusso nella posizione Amazon S3 specificata. Sostituisci {bucket-name} e {folder} con il percorso della posizione Amazon S3 desiderata. Per ulteriori informazioni sul comando e sui parametri, consulta la sezione sul comando sync nella documentazione di riferimento dei comandi della AWS AWS CLI.

    aws s3 sync . s3://{bucket-name}/{folder}/ --exclude "*.*" --include "*.flow"

    Se stai utilizzando la tua AWS KMS key, esegui invece questo comando per sincronizzare i file e specificare l’ID chiave KMS. Verifica che il ruolo di esecuzione IAM dell’utente (che dovrebbe essere lo stesso ruolo utilizzato nella Fase 1. Migrazione del dominio e concessione delle autorizzazioni dei prerequisiti precedenti) disponga dell’accesso per utilizzare la chiave KMS.

    aws s3 sync . s3://{bucket-name}/{folder}/ --exclude "*.*" --include "*.flow" --sse-kms-key-id {your-key-id}

I file del flusso ora dovrebbero essere stati esportati. Puoi controllare il tuo bucket Amazon S3 per assicurarti che i file del flusso siano sincronizzati correttamente.

Per importare questi file nella versione più recente di Data Wrangler, segui la procedura in Importazione dei file del flusso in Canvas.

Metodo 2: utilizzare il computer locale per trasferire i file del flusso

Con questo metodo puoi scaricare i file del flusso da Studio Classic sul computer locale. Puoi scaricare i file direttamente oppure comprimerli come archivio zip. Nel secondo caso, decomprimi il file zip localmente (se applicabile), accedi a Canvas e importa i file del flusso caricandoli dal tuo computer locale.

Utilizza la procedura seguente per scaricare i file del flusso da Studio Classic:

  1. Apri Studio Classic.

  2. (Facoltativo) Se desideri comprimere più file del flusso in un archivio zip e scaricarli tutti in una volta, procedi come descritto di seguito:

    1. Nella barra di navigazione in alto di Studio Classic, scegli File.

    2. Nel menu contestuale, passa il mouse su Nuovo, quindi seleziona Terminale.

    3. Per impostazione predefinita, il terminale si apre nella home directory. Accedi alla cartella che contiene tutti i file del flusso di cui eseguire la migrazione.

    4. Utilizza il comando seguente per comprimere i file del flusso nella directory corrente come file zip. Il comando esclude qualsiasi file nascosto:

      find . -not -path "*/.*" -name "*.flow" -print0 | xargs -0 zip my_archive.zip
  3. Scarica l’archivio zip o i singoli file del flusso sul tuo computer locale seguendo questa procedura:

    1. Nel riquadro di navigazione a sinistra di Studio Classic, scegli Browser di file.

    2. Trova il file da scaricare nel browser di file.

    3. Fai clic con il pulsante destro del mouse sul file e, nel menu contestuale, seleziona Scarica.

Il file dovrebbe essere scaricato nel computer locale. Se li hai compressi come archivio zip, estrai i file localmente. Dopo aver estratto i file, per importarli nell’ultima versione di Data Wrangler, segui la procedura riportata in Importazione dei file del flusso in Canvas.

Importazione dei file del flusso in Canvas

Dopo aver esportato i file del flusso, accedi a Canvas tramite Studio e importa i file.

Utilizza la procedura seguente per importare i file del flusso in Canvas:

  1. Apri la versione più recente di Studio.

  2. In Studio, nel riquadro di navigazione a sinistra, scegli il menu a discesa Dati.

  3. Dalle opzioni di navigazione, scegli Data Wrangler.

  4. Nella pagina Data Wrangler, scegli Esegui in Canvas. Se hai impostato correttamente le autorizzazioni, verrà creata automaticamente un’applicazione Canvas. Potrebbero essere necessari alcuni minuti prima che l’applicazione Canvas sia pronta.

  5. Quando Canvas è pronta, scegli Apri in Canvas.

  6. Canvas si apre nella pagina Data Wrangler. Nel riquadro superiore, scegli Importa flussi di dati.

  7. Da Origine dati, scegli Amazon S3 o Caricamento locale.

  8. Seleziona i file del flusso dal tuo bucket Amazon S3 o carica i file dal tuo computer locale.

    Nota

    Per il caricamento locale, puoi caricare un massimo di 20 file del flusso alla volta. Per importazioni di dimensioni maggiori, utilizza Amazon S3. Se selezioni una cartella da importare, vengono importati anche tutti i file del flusso nelle sottocartelle.

  9. Scegli Import data (Importa dati).

Se l’importazione riesce, riceverai una notifica che indica che X file del flusso sono stati importati correttamente.

Se i file del flusso non vengono importati correttamente, riceverai una notifica nell’applicazione SageMaker Canvas. Scegli Visualizza errori nel messaggio di notifica per controllare i singoli messaggi di errore e ottenere indicazioni su come riformattare gli eventuali file del flusso formattati in modo errato.

Al termine dell’importazione dei file del flusso, vai alla pagina Data Wrangler dell’applicazione SageMaker Canvas per visualizzare i flussi di dati. Puoi provare ad aprire un flusso di dati per verificare che abbia l’aspetto previsto.