(Facultatif) Migration des données de Studio Classic vers Studio - Amazon SageMaker AI

(Facultatif) Migration des données de Studio Classic vers Studio

Studio Classic et Studio utilisent deux types de volumes de stockage différents. Studio Classic utilise un volume Amazon Elastic File System (Amazon EFS) unique pour stocker les données de tous les utilisateurs et de tous les espaces partagés dans le domaine. Dans Studio, chaque espace possède son propre volume Amazon Elastic Block Store (Amazon EBS). Lorsque vous mettez à jour l’expérience par défaut d’un domaine existant, SageMaker AI monte automatiquement un dossier dans un volume Amazon EFS pour chaque utilisateur du domaine. Par conséquent, les utilisateurs peuvent accéder aux fichiers depuis Studio Classic dans leurs applications Studio. Pour plus d’informations, consultez Montage automatique d’Amazon EFS dans Studio.

Vous pouvez également désactiver le montage automatique Amazon EFS et migrer manuellement les données pour permettre aux utilisateurs d’accéder aux fichiers depuis Studio Classic dans les applications Studio. Pour ce faire, vous devez transférer les fichiers des répertoires personnels des utilisateurs aux volumes Amazon EBS associés à ces espaces. La section suivante fournit des informations sur ce flux de travail. Pour plus d’informations sur la désactivation du montage automatique Amazon EFS, consultez Désactivation du montage automatique Amazon EFS.

Migration manuelle de toutes vos données depuis Studio Classic

La section suivante explique comment migrer toutes les données de votre volume de stockage Studio Classic vers la nouvelle expérience Studio.

Lorsque vous migrez manuellement les données, le code et les artefacts d’un utilisateur de Studio Classic vers Studio, nous vous recommandons l’une des approches suivantes :

  1. Utilisation d’un volume Amazon EFS personnalisé

  2. Utilisation d’Amazon Simple Storage Service (Amazon S3)

Si vous utilisiez Amazon SageMaker Data Wrangler dans Studio Classic et que vous souhaitez migrer vos fichiers de flux de données, choisissez l’une des options de migration suivantes :

  • Si vous souhaitez migrer toutes les données de votre volume de stockage Studio Classic, y compris vos fichiers de flux de données, consultez Migration manuelle de toutes vos données depuis Studio Classic et suivez la section Utilisation d’Amazon S3 pour migrer les données. Passez ensuite à la section Importation des fichiers de flux dans Canvas.

  • Si vous souhaitez uniquement migrer vos fichiers de flux de données et aucune autre donnée de votre volume de stockage Studio Classic, passez à la section Migration des flux de données depuis Data Wrangler.

Prérequis

Avant de suivre ces étapes, veillez à respecter les conditions préalables requises dans Conditions préalables requises complètes pour migrer l’expérience Studio. Vous devez également suivre les étapes fournies dans Migration de l’interface utilisateur de Studio Classic vers Studio.

Choix d’une approche

Tenez compte des éléments suivants lorsque vous choisissez une approche pour migrer vos données Studio Classic.

Avantages et inconvénients de l’utilisation d’un volume Amazon EFS personnalisé

Dans cette approche, vous utilisez une tâche AWS DataSync d’Amazon EFS vers Amazon EFS (ponctuelle ou cadence) pour copier les données, puis vous montez le volume Amazon EFS cible sur les espaces d’un utilisateur. Cela permet aux utilisateurs d’accéder aux données depuis Studio Classic dans leurs environnements informatiques Studio.

Avantages :

  • Seules les données du répertoire de base de l’utilisateur sont visibles dans les espaces de l’utilisateur. Aucune pollinisation croisée des données n’intervient.

  • La synchronisation du volume Amazon EFS source vers un volume Amazon EFS cible est plus sûre que le montage direct du volume Amazon EFS source géré par SageMaker AI dans des espaces. Cela permet d’éviter tout impact potentiel sur les fichiers utilisateur du répertoire de base.

  • Les utilisateurs ont la possibilité de continuer à travailler dans les applications Studio Classic et Studio, tout en ayant leurs données disponibles dans les deux applications si AWS DataSync est configuré à une cadence régulière.

  • Il est inutile de recourir à des envois (push) et extractions (pull) répétés avec Amazon S3.

Inconvénients :

  • Aucun accès en écriture au volume Amazon EFS cible monté dans les espaces de l’utilisateur. Pour obtenir un accès en écriture au volume Amazon EFS cible, les clients doivent monter le volume Amazon EFS cible sur une instance Amazon Elastic Compute Cloud et fournir les autorisations appropriées aux utilisateurs pour écrire dans le préfixe Amazon EFS.

  • Nécessite une modification des groupes de sécurité gérés par SageMaker AI pour autoriser les flux entrants et sortants du système de fichiers réseau (NFS).

  • Coûte plus cher que d’utiliser Amazon S3.

  • Si vous migrez des flux de données depuis Data Wrangler dans Studio Classic, vous devez suivre les étapes d’exportation manuelle des fichiers de flux.

Avantages et inconvénients de l’utilisation d’Amazon S3

Dans cette approche, vous utilisez une tâche AWS DataSync d’Amazon EFS vers Amazon S3 (ponctuelle ou cadence) pour copier des données, puis vous créez une configuration de cycle de vie pour copier les données de l’utilisateur depuis Amazon S3 vers le volume Amazon EBS de son espace privé.

Avantages :

  • Si la configuration LCC est attachée au domaine, les utilisateurs peuvent choisir d’utiliser la configuration LCC pour copier les données dans leur espace ou d’exécuter l’espace sans script LCC. Cela donne aux utilisateurs le choix de copier leurs fichiers uniquement dans les espaces dont ils ont besoin.

  • Si une tâche AWS DataSync est configurée à une cadence, les utilisateurs peuvent redémarrer leur application Studio pour obtenir les derniers fichiers.

  • Les données étant copiées sur Amazon EBS, les utilisateurs disposent d’autorisations d’écriture sur les fichiers.

  • Le stockage Amazon S3 est moins cher qu’Amazon EFS.

  • Si vous migrez des flux de données depuis Data Wrangler dans Studio Classic, vous pouvez ignorer les étapes d’exportation manuelle et importer directement les flux de données dans SageMaker Canvas depuis Amazon S3.

Inconvénients :

  • Si les administrateurs doivent empêcher la pollinisation croisée, ils doivent créer des politiques AWS Identity and Access Management au niveau de l’utilisateur pour garantir que les utilisateurs ne peuvent accéder qu’au préfixe Amazon S3 qui contient leurs fichiers.

Dans cette approche, vous utilisez une tâche AWS DataSync d’Amazon EFS vers Amazon EFS pour copier le contenu d’un volume Amazon EFS Studio Classic vers un volume Amazon EFS cible une seule fois ou selon une cadence régulière, puis vous montez le volume Amazon EFS cible sur les espaces d’un utilisateur. Cela permet aux utilisateurs d’accéder aux données depuis Studio Classic dans leurs environnements informatiques Studio.

  1. Créez un volume Amazon EFS cible. Vous allez transférer les données vers ce volume Amazon EFS et monter ce dernier sur l’espace d’un utilisateur correspondant à l’aide d’un montage au niveau du préfixe.

    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. Ajoutez des variables pour le volume Amazon EFS source actuellement attaché au domaine et utilisé par tous les utilisateurs. Les informations Amazon Virtual Private Cloud du domaine sont requises pour garantir que le service Amazon EFS cible est créé dans le même réseau Amazon VPC et le même sous-réseau, avec la même configuration de groupes de sécurité.

    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. Créez une cible de montage Amazon EFS dans le même réseau Amazon VPC et le même sous-réseau que le volume Amazon EFS source, avec la même configuration de groupes de sécurité. La cible de montage met quelques minutes à être disponible.

    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. Créez les emplacements source et de destination Amazon EFS pour la tâche 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. Autorisez le trafic entre les montages du système de fichiers réseau (NFS) source et cible. Lorsqu’un nouveau domaine est créé, SageMaker AI crée 2 groupes de sécurité.

    • Groupe de sécurité entrant NFS avec trafic entrant uniquement.

    • Groupe de sécurité sortant NFS avec trafic sortant uniquement.

    Les systèmes NFS source et cible sont placés dans les mêmes groupes de sécurité. Vous pouvez autoriser le trafic entre ces montages depuis la AWS Management Console ou l’AWS CLI.

    • Autorisation du trafic en provenance de la AWS Management Console

      1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon VPC à l’adresse https://console.aws.amazon.com/vpc/.

      2. Choisissez Security Groups.

      3. Recherchez l’ID du domaine existant sur la page Groupes de sécurité.

        d-xxxxxxx

        Les résultats devraient renvoyer deux groupes de sécurité incluant l’ID de domaine dans leur nom.

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

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

      4. Sélectionnez l’ID du groupe de sécurité entrant. Cela ouvre une nouvelle page de détails sur le groupe de sécurité.

      5. Sélectionnez l’onglet Règles sortantes.

      6. Sélectionnez Modifier les règles sortantes.

      7. Mettez à jour les règles sortantes existantes ou ajoutez-en une nouvelle avec les valeurs suivantes :

        • Type : NFS

        • Protocole : TCP

        • Plage de ports : 2049

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

      8. Sélectionnez Enregistrer les règles.

      9. Sélectionnez l’onglet Règles entrantes.

      10. Sélectionnez Modifier les règles entrantes.

      11. Mettez à jour les règles entrantes existantes ou ajoutez une nouvelle règle sortante avec les valeurs suivantes :

        • Type : NFS

        • Protocole : TCP

        • Plage de ports : 2049

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

      12. Sélectionnez Enregistrer les règles.

    • Autorisation du trafic en provenance de l’AWS CLI

      1. Mettez à jour les règles entrantes et sortantes des groupes de sécurité avec les valeurs suivantes :

        • Protocole : TCP

        • Plage de ports : 2049

        • ID de groupe : ID de groupe de sécurité entrant ou ID de groupe de sécurité sortant

        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. Ajoutez les groupes de sécurité entrants et sortants aux cibles de montage Amazon EFS source et cible. Cela permet le trafic entre les deux montages 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. Créez une tâche AWS DataSync. Cela renvoie un ARN de tâche qui peut être utilisé pour exécuter la tâche à la demande ou dans le cadre d’une cadence régulière.

    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. Démarrez une tâche AWS DataSync pour copier automatiquement les données du montage Amazon EFS source vers le montage Amazon EFS cible. Cela ne conserve pas les autorisations POSIX du fichier, qui permettent aux utilisateurs de lire à partir du montage Amazon EFS cible, mais pas d’y écrire.

    aws datasync start-task-execution --task-arn $DATASYNC_TASK_ARN
  8. Montez le volume Amazon EFS cible sur le domaine au niveau racine.

    aws sagemaker update-domain --domain-id $SOURCE_DOMAIN_ID \ --default-user-settings '{"CustomFileSystemConfigs": [{"EFSFileSystemConfig": {"FileSystemId": "'"$TARGET_EFS"'", "FileSystemPath": "/"}}]}'
  9. Remplacez chaque profil utilisateur par un préfixe FileSystemPath. Le préfixe inclut l’UID de l’utilisateur, créé par SageMaker AI. Cela garantit que les utilisateurs n’ont accès qu’à leurs données et empêche la pollinisation croisée. Lorsqu’un espace est créé dans le domaine et que le volume Amazon EFS cible est monté sur l’application, le préfixe de l’utilisateur remplace le préfixe du domaine. Par conséquent, SageMaker AI monte uniquement le répertoire /user-id sur l’application de l’utilisateur.

    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. Les utilisateurs peuvent ensuite sélectionner le système de fichiers Amazon EFS personnalisé lors du lancement d’une application. Pour plus d’informations, consultez Guide de l’utilisateur JupyterLab ou Lancement d’une application d’éditeur de code dans Studio.

Dans cette approche, vous utilisez une tâche AWS DataSync d’Amazon EFS vers Amazon S3 pour copier le contenu d’un volume Amazon EFS Studio Classic vers un compartiment Amazon S3 une seule fois ou à une cadence régulière, puis vous créez une configuration de cycle de vie pour copier les données de l’utilisateur depuis Amazon S3 vers le volume Amazon EBS de son espace privé.

Note

Cette approche ne fonctionne que pour les domaines qui ont accès à Internet.

  1. Définissez l’ID du volume Amazon EFS source à partir du domaine contenant les données que vous migrez.

    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. Définissez le nom du compartiment Amazon S3 cible. Pour en savoir plus sur la création d’un compartiment Amazon S3, consultez Création d’un compartiment. Le compartiment utilisé doit avoir une politique CORS telle que décrite dans (Facultatif) Mise à jour de votre politique CORS pour accéder aux compartiments Amazon S3. Les utilisateurs du domaine doivent également disposer des autorisations pour accéder au compartiment Amazon S3.

    Dans cet exemple, nous copions des fichiers vers un préfixe nommé studio-new. Si vous utilisez un compartiment Amazon S3 unique pour migrer plusieurs domaines, utilisez le préfixe studio-new/<domain-id> pour restreindre les autorisations aux fichiers à l’aide d’IAM.

    export BUCKET_NAME=s3-bucket-name export S3_DESTINATION_PATH=studio-new
  3. Créez une stratégie d’approbation qui accorde les autorisations AWS DataSync nécessaires pour assumer le rôle d’exécution de votre compte.

    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. Créez un rôle IAM et attachez-lui la politique d’approbation.

    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. Créez un groupe de sécurité pour donner accès à l’emplacement 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. Créez un emplacement Amazon EFS source pour la tâche 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. Créez un emplacement Amazon S3 cible pour la tâche 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. Créez une tâche 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. Démarrez la tâche AWS DataSync. Cette tâche copie automatiquement les données du volume Amazon EFS source vers le compartiment Amazon S3 cible. Attendez que la tâche se termine.

    aws datasync start-task-execution --task-arn $TASK_ARN
  10. Vérifiez le statut de la tâche AWS DataSync pour vérifier qu’elle est terminée. Transmettez l’ARN renvoyé à l’étape précédente.

    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. Une fois la tâche AWS DataSync terminée, nettoyez les ressources créées précédemment.

    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. À partir de votre ordinateur local, créez un fichier nommé on-start.sh avec le contenu suivant. Ce script copie le répertoire de base Amazon EFS de l’utilisateur dans Amazon S3 vers le volume Amazon EBS de l’utilisateur dans Studio et crée un préfixe pour chaque profil utilisateur.

    #!/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. Convertissez votre script au format base64. Cette exigence évite les erreurs dues à l’encodage des espacements et des sauts de ligne. Le type de script peut être JupyterLab ou 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. Vérifiez les points suivants avant d’utiliser le script :

    • Le volume Amazon EBS est suffisamment grand pour stocker les objets que vous exportez.

    • Vous ne migrez pas de fichiers et de dossiers cachés, comme .bashrc et .condarc, si vous n’en avez pas l’intention.

    • Le rôle d’exécution AWS Identity and Access Management (IAM) associé aux profils utilisateur Studio possède les politiques configurées pour accéder uniquement au répertoire de base correspondant dans Amazon S3.

  15. Créez une configuration de cycle de vie à l’aide de votre 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. Attachez la configuration LCC à votre domaine.

    aws sagemaker update-domain \ --domain-id $SOURCE_DOMAIN_ID \ --default-user-settings ' {"JupyterLabAppSettings": {"LifecycleConfigArns": [ "lifecycle-config-arn" ] } }'
  17. Les utilisateurs peuvent ensuite sélectionner le script LCC lors du lancement d’une application. Pour plus d’informations, consultez Guide de l’utilisateur JupyterLab ou Lancement d’une application d’éditeur de code dans Studio. Cela synchronise automatiquement les fichiers d’Amazon S3 avec le stockage Amazon EBS pour l’espace de l’utilisateur.

Migration des flux de données depuis Data Wrangler

Si vous avez déjà utilisé Amazon SageMaker Data Wrangler dans Amazon SageMaker Studio Classic pour des tâches de préparation des données, vous pouvez migrer vers le nouveau service Amazon SageMaker Studio et accéder à la dernière version de Data Wrangler dans Amazon SageMaker Canvas. Dans SageMaker Canvas, Data Wrangler vous offre une expérience utilisateur améliorée et un accès aux dernières fonctionnalités, telles qu’une interface en langage naturel et des performances plus rapides.

Vous pouvez intégrer SageMaker Canvas à tout moment pour commencer à utiliser la nouvelle expérience Data Wrangler. Pour plus d’informations, consultez Commencer à utiliser Amazon SageMaker Canvas.

Si vous avez enregistré des fichiers de flux de données dans Studio Classic sur lesquels vous travailliez auparavant, vous pouvez intégrer Studio, puis importer les fichiers de flux dans Canvas. Vous disposez des options suivantes pour la migration :

  • Migration en un clic : lorsque vous vous connectez à Canvas, vous pouvez utiliser une option d’importation unique qui migre tous vos fichiers de flux en votre nom.

  • Migration manuelle : vous pouvez importer manuellement vos fichiers de flux dans Canvas. Depuis Studio Classic, exportez les fichiers vers Amazon S3 ou téléchargez-les sur votre ordinateur local. Ensuite, vous vous connectez à l’application SageMaker Canvas, vous importez les fichiers de flux et vous poursuivez vos tâches de préparation des données.

Le guide suivant décrit les conditions préalables à la migration et explique comment migrer vos fichiers de flux de données à l’aide de l’option manuelle ou en un clic.

Prérequis

Passez en revue les conditions préalables suivantes avant de commencer à migrer vos fichiers de flux.

Étape 1. Migration du domaine et octroi des autorisations

Avant de migrer les fichiers de flux de données, vous devez suivre les étapes spécifiques du guide Migration depuis Amazon SageMaker Studio Classic pour vous assurer que le rôle d’exécution AWS IAM de votre profil utilisateur dispose des autorisations requises. Avant de continuer, suivez les rubriques Conditions préalables requises et Migration de l’interface utilisateur de Studio Classic vers Studio, qui décrivent comment accorder les autorisations requises, configurer Studio en tant que nouvelle expérience et migrer votre domaine existant.

Plus précisément, vous devez être autorisé à créer une application SageMaker Canvas et à utiliser les fonctionnalités de préparation des données de SageMaker Canvas. Pour obtenir ces autorisations, vous pouvez :

Assurez-vous d’utiliser le même profil utilisateur pour Studio et SageMaker Canvas.

Après avoir rempli les conditions préalables requises décrites dans le guide de migration, vous devriez disposer d’un nouveau domaine avec les autorisations requises pour accéder à SageMaker Canvas via Studio.

Étape 2. (Facultatif) Préparation d’un emplacement Amazon S3

Si vous effectuez une migration manuelle et que vous prévoyez d’utiliser Amazon S3 pour transférer vos fichiers de flux au lieu d’utiliser l’option de téléchargement local, vous devez disposer d’un compartiment Amazon S3 dans votre compte que vous souhaitez utiliser pour stocker les fichiers de flux.

Méthode de migration en un clic

SageMaker Canvas propose une option d’importation unique pour migrer vos flux de données de Data Wrangler dans Studio Classic vers Data Wrangler dans SageMaker Canvas. Tant que vos applications Studio Classic et Canvas partagent le même volume de stockage Amazon EFS, vous pouvez effectuer la migration en un clic depuis Canvas. Ce processus rationalisé élimine le besoin d’étapes manuelles d’exportation et d’importation, et vous pouvez importer tous vos flux en une seule fois.

Utilisez la procédure suivante pour migrer l’ensemble de vos fichiers de flux :

  1. Ouvrez votre dernière version de Studio.

  2. Dans Studio, dans le volet de navigation de gauche, choisissez le menu déroulant Données.

  3. Dans les options de navigation, choisissez Data Wrangler.

  4. Sur la page Data Wrangler, choisissez Exécuter dans Canvas. Si vous avez correctement configuré les autorisations, cela crée une application Canvas pour vous. L’application Canvas peut prendre quelques minutes avant d’être prête.

  5. Lorsque l’application Canvas est prête, choisissez Ouvrir dans Canvas.

  6. Canvas s’ouvre à la page Data Wrangler et une bannière apparaît en haut de la page indiquant Importez vos flux de données depuis Data Wrangler dans Studio Classic vers Canvas. Il s’agit d’une importation unique. En savoir plus. Dans la bannière, choisissez Tout importer.

    Avertissement

    Si vous fermez la bannière de notification, vous ne pourrez plus la rouvrir ni utiliser la méthode de migration en un clic.

Une notification contextuelle apparaît, indiquant que Canvas importe vos fichiers de flux depuis Studio Classic. Si l’importation est entièrement réussie, vous recevez une autre notification indiquant qu’un nombre X de fichiers de flux ont été importés, et vous pouvez voir vos fichiers de flux sur la page Data Wrangler de l’application Canvas. Tous les fichiers de flux importés portant le même nom que les flux de données existants dans votre application Canvas sont renommés avec un suffixe. Vous pouvez ouvrir un flux de données pour vérifier qu’il s’affiche comme prévu.

Si l’importation de l’un de vos fichiers de flux échoue, vous recevez une notification indiquant que l’importation a partiellement réussi ou qu’elle a échoué. Choisissez Voir les erreurs dans le message de notification pour consulter les messages d’erreur individuels et obtenir des conseils sur la manière de reformater les fichiers de flux mal formatés.

Après avoir importé vos fichiers de flux, vous devriez pouvoir continuer à utiliser Data Wrangler pour préparer les données dans SageMaker Canvas.

Méthode de migration manuelle

Les sections suivantes décrivent comment importer manuellement vos fichiers de flux dans Canvas au cas où la méthode de migration en un clic ne fonctionnerait pas.

Exportation des fichiers de flux depuis Studio Classic

Note

Si vous avez déjà migré vos données Studio Classic vers Amazon S3 en suivant les instructions fournies dans (Facultatif) Migration des données de Studio Classic vers Studio, vous pouvez ignorer cette étape et passer directement à la section Importation des fichiers de flux dans Canvas dans laquelle vous importez vos fichiers de flux depuis l’emplacement Amazon S3 où vos données Studio Classic sont stockées.

Vous pouvez exporter vos fichiers de flux en les enregistrant sur Amazon S3 ou en les téléchargeant sur votre ordinateur local. Lorsque vous importez vos fichiers de flux dans SageMaker Canvas à l’étape suivante, si vous choisissez l’option de chargement local, vous ne pouvez charger que 20 fichiers de flux à la fois. Si vous avez un grand nombre de fichiers de flux à importer, nous vous recommandons d’utiliser Amazon S3 à la place.

Suivez les instructions fournies dans Méthode 1 : utilisation d’Amazon S3 pour transférer les fichiers de flux ou Méthode 2 : utilisation de votre ordinateur local pour transférer les fichiers de flux pour continuer.

Méthode 1 : utilisation d’Amazon S3 pour transférer les fichiers de flux

Avec cette méthode, vous utilisez Amazon S3 comme intermédiaire entre Data Wrangler dans Studio Classic et Data Wrangler dans SageMaker Canvas (accessible via la dernière version de Studio). Vous exportez les fichiers de flux de Studio Classic vers Amazon S3, puis à l’étape suivante, vous accédez à Canvas via Studio et vous importez les fichiers de flux depuis Amazon S3.

Assurez-vous de disposer d’un compartiment Amazon S3 préparé comme emplacement de stockage pour les fichiers de flux.

Utilisez la procédure suivante pour exporter vos fichiers de flux de Studio Classic vers Amazon S3 :

  1. Ouvrez Studio Classic.

  2. Ouvrez un nouveau terminal en procédant comme suit :

    1. Dans la barre de navigation supérieure, choisissez Fichier.

    2. Dans le menu contextuel, survolez Nouveau, puis sélectionnez Terminal.

  3. Par défaut, le terminal doit s’ouvrir dans votre répertoire de base. Accédez au dossier contenant tous les fichiers de flux que vous souhaitez migrer.

  4. Utilisez la commande suivante pour synchroniser tous les fichiers de flux à l’emplacement Amazon S3 spécifié. Remplacez {bucket-name} et {folder} par le chemin d’accès à l’emplacement Amazon S3 de votre choix. Pour plus d’informations sur la commande et les paramètres, consultez la commande sync dans la Référence des commandes AWS AWS CLI.

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

    Si vous utilisez votre propre AWS KMS key, utilisez plutôt la commande suivante pour synchroniser les fichiers et spécifiez votre ID de clé KMS. Assurez-vous que le rôle d’exécution IAM de l’utilisateur (qui doit être le même rôle que celui utilisé dans Étape 1 : Migration du domaine et octroi des autorisations de la rubrique précédente Conditions préalables requises) a été autorisé à utiliser la clé KMS.

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

Vos fichiers de flux doivent maintenant être exportés. Vous pouvez vérifier votre compartiment Amazon S3 pour vous assurer que les fichiers de flux se sont synchronisés avec succès.

Pour importer ces fichiers dans la dernière version de Data Wrangler, suivez les étapes décrites dans Importation des fichiers de flux dans Canvas.

Méthode 2 : utilisation de votre ordinateur local pour transférer les fichiers de flux

Cette méthode vous permet de télécharger les fichiers de flux depuis Studio Classic sur votre ordinateur local. Vous pouvez télécharger les fichiers directement ou les compresser sous forme d’archive zip. Ensuite, vous décompressez le fichier zip localement (le cas échéant), vous vous connectez à Canvas et vous importez les fichiers de flux en les chargeant depuis votre ordinateur local.

Utilisez la procédure suivante pour télécharger vos fichiers de flux à partir de Studio Classic :

  1. Ouvrez Studio Classic.

  2. (Facultatif) Si vous souhaitez compresser plusieurs fichiers de flux dans une archive zip et les télécharger tous en une seule fois, procédez comme suit :

    1. Dans la barre de navigation supérieure de Studio Classic, choisissez Fichier.

    2. Dans le menu contextuel, survolez Nouveau, puis sélectionnez Terminal.

    3. Par défaut, le terminal s’ouvre dans votre répertoire de base. Accédez au dossier contenant tous les fichiers de flux que vous souhaitez migrer.

    4. Utilisez la commande suivante pour compresser les fichiers de flux dans le répertoire actuel sous forme de fichier zip. La commande exclut tous les fichiers cachés :

      find . -not -path "*/.*" -name "*.flow" -print0 | xargs -0 zip my_archive.zip
  3. Téléchargez l’archive zip ou les fichiers de flux individuels sur votre ordinateur local en procédant comme suit :

    1. Dans le volet de navigation de gauche, choisissez Explorateur de fichiers.

    2. Recherchez le fichier que vous souhaitez télécharger dans l’explorateur de fichiers.

    3. Cliquez avec le bouton droit sur le fichier, puis, dans le menu contextuel, sélectionnez Télécharger.

Le fichier doit être téléchargé sur votre ordinateur local. Si vous les avez compressés sous forme d’archive zip, extrayez les fichiers localement. Une fois les fichiers extraits, pour importer ces fichiers dans la dernière version de Data Wrangler, suivez les étapes décrites dans Importation des fichiers de flux dans Canvas.

Importation des fichiers de flux dans Canvas

Après avoir exporté vos fichiers de flux, accédez à Canvas via Studio et importez les fichiers.

Utilisez la procédure suivante pour importer les fichiers de flux dans Canvas :

  1. Ouvrez votre dernière version de Studio.

  2. Dans Studio, dans le volet de navigation de gauche, choisissez le menu déroulant Données.

  3. Dans les options de navigation, choisissez Data Wrangler.

  4. Sur la page Data Wrangler, choisissez Exécuter dans Canvas. Si vous avez correctement configuré les autorisations, cela crée une application Canvas pour vous. L’application Canvas peut prendre quelques minutes avant d’être prête.

  5. Lorsque l’application Canvas est prête, choisissez Ouvrir dans Canvas.

  6. Canvas s’ouvre à la page Data Wrangler. Dans le volet supérieur, choisissez Importer des flux de données.

  7. Pour Source de données, choisissez Amazon S3 ou Chargement local.

  8. Sélectionnez vos fichiers de flux dans votre compartiment Amazon S3 ou chargez les fichiers depuis votre ordinateur local.

    Note

    Pour le chargement local, vous pouvez charger un maximum de 20 fichiers de flux à la fois. Pour les importations plus importantes, utilisez Amazon S3. Si vous sélectionnez un dossier à importer, tous les fichiers de flux figurant dans les sous-dossiers sont également importés.

  9. Choisissez Import data (Importer les données).

Si l’importation réussit, vous recevez une notification indiquant qu’un nombre X de fichiers de flux ont été importés avec succès.

Si vos fichiers de flux ne sont pas importés avec succès, vous recevez une notification dans l’application SageMaker Canvas. Choisissez Voir les erreurs dans le message de notification pour consulter les messages d’erreur individuels et obtenir des conseils sur la manière de reformater les fichiers de flux mal formatés.

Une fois l’importation de vos fichiers de flux terminée, accédez à la page Data Wrangler de l’application SageMaker Canvas pour visualiser vos flux de données. Vous pouvez essayer d’ouvrir un flux de données pour vérifier qu’il s’affiche comme prévu.