階段 3:(可選)將數據從工作室傳統遷移到工作室 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

階段 3:(可選)將數據從工作室傳統遷移到工作室

工作室經典版和工作室使用兩種不同類型的存儲卷。Studio 經典版使用單一 Amazon Elastic File System (AmazonEFS) 磁碟區,將資料存放在網域中的所有使用者和共用空間。在工作室中,每個空間都有自己的 Amazon 彈性塊商店(AmazonEBS)卷。當您更新現有網域的預設體驗時, SageMaker 會為網域中的每個使用者自動在 Amazon EFS 磁碟區中掛載資料夾。因此,使用者可以在其 Studio 應用程式中存取工作室傳統版中的檔案。如需詳細資訊,請參閱Amazon 在工作EFS室自動安裝

您也可以選擇退出 Amazon EFS 自動掛載並手動遷移資料,讓使用者能夠在 Studio 應用程式中存取來自 Studio Classic 的檔案。若要完成此操作,您必須將檔案從使用者主目錄傳輸到與這些空間關聯的 Amazon EBS 磁碟區。下一節提供有關此工作流程的資訊。如需選擇退出 Amazon EFS 自動掛載的詳細資訊,請參閱。退出 Amazon 自EFS動掛載

從工作室傳統版手動遷移所有資料

下一節說明如何將所有資料從您的 Studio 傳統儲存磁碟區遷移到新的 Studio 體驗。

手動將使用者的資料、程式碼和成品從 Studio 傳統版移轉至 Studio 時,我們建議您採用下列其中一種方法:

  1. 使用自定義 Amazon EFS 卷

  2. 使用 Amazon Simple Storage Service (Amazon S3)

如果您在 Studio 典型版中使用 Amazon SageMaker 資料傳輸工具,而且想要遷移資料流程檔案,請選擇下列其中一個移轉選項:

  • 如果您想要從 Studio Classic 儲存磁碟區遷移所有資料 (包括資料流程檔案),請移至從工作室傳統版手動遷移所有資料並完成使用 Amazon S3 遷移資料一節。然後,跳到該將流程檔案匯入畫布部分。

  • 如果您只想從 Studio Classic 儲存磁碟區遷移資料流程檔案,而不想遷移其他資料,請跳至從資料牧馬人遷移資料流本節。

必要條件

執行這些步驟之前,請先完成中的先決條件完成移轉 Studio 體驗的必要條件。您還必須完成中的步驟階段 1:將 UI 從工作室經典版遷移到工作室

選擇一種方法

選擇遷移 Studio 典型資料的方法時,請考慮下列事項。

使用自定義 Amazon EFS 卷的優點和缺點

在這種方法中,您可以使用 Amazon EFS 到 Amazon EFS AWS DataSync 任務(一次或節奏)複製資料,然後將目標 Amazon EFS 磁碟區掛接到使用者的空間。這可讓使用者在其 Studio 運算環境中存取來自工作室傳統版的資料。

優點:

  • 只有使用者的主目錄資料才會顯示在使用者的空間中。沒有數據交叉授粉。

  • 從來源 Amazon EFS 磁碟區同步到目標 Amazon EFS 磁碟區比直接 SageMaker 將由管理的來源 Amazon EFS 磁碟區掛接到空間更安全。這樣可以避免影響主目錄使用者檔案的可能性。

  • 用戶可以靈活地繼續在 Studio Classic 和 Studio 應用程序中工作,同時在兩個應用程序中使用他們的數據 AWS DataSync 設置在一個定期的節奏。

  • Amazon S3 無需重複推拉。

缺點:

  • 對掛接到使用者空間的目標 Amazon EFS 磁碟區沒有寫入存取權。若要取得目標 Amazon EFS 磁碟區的寫入存取權,客戶需要將目標 Amazon EFS 磁碟區掛接到 Amazon 彈性運算雲端執行個體,並提供適當的許可讓使用者寫入 Amazon EFS 前置詞。

  • 需要修改由管理的安全群組, SageMaker 以允許網路檔案系統 (NFS) 輸入和輸出流程。

  • 成本比使用 Amazon S3 更高。

  • 如果從 Studio 傳統版中的資料牧馬人移轉資料流程,您必須遵循手動匯出流程檔案的步驟。

使用 Amazon S3 的優點和缺點

在這種方法中,您可以使用 Amazon EFS 到 Amazon S3 AWS DataSync 複製資料的任務 (一次性或節奏),然後建立生命週期組態,將使用者的資料從 Amazon S3 複製到其私有空間的 Amazon EBS 磁碟區。

優點:

  • 如果LCC已附加至網域,使用者可以選擇使用將資料複製LCC到其空間,或在不使用LCC指令碼的情況下執行空間。這使用戶可以選擇僅將其文件複製到他們需要的空間。

  • 如果 AWS DataSync 任務設置在一個節奏,用戶可以重新啟動他們的 Studio 應用程序以獲取最新的文件。

  • 由於資料會複製到 AmazonEBS,因此使用者擁有檔案的寫入許可。

  • Amazon S3 存儲比 Amazon 便宜EFS。

  • 如果在 Studio 傳統版中從資料牧馬人移轉資料流程,您可以略過手動匯出步驟,並將資料流程直接從 Amazon S3 匯入 SageMaker Canvas。

缺點:

  • 如果系統管理員需要防止交叉授粉,則必須建立 AWS Identity and Access Management 使用者層級的政策可確保使用者只能存取包含其檔案的 Amazon S3 前置詞。

在這種方法中,您可以使用 Amazon EFS 到 Amazon EFS AWS DataSync 將工作室經典 Amazon EFS 卷的內容複製到目標 Amazon EFS 卷一次或以常規節奏,然後將目標 Amazon EFS 卷安裝到用戶的空間。這可讓使用者在其 Studio 運算環境中存取來自工作室傳統版的資料。

  1. 創建一個目標 Amazon EFS 卷。您將資料傳輸到此 Amazon EFS 磁碟區,並使用首碼層掛載將其掛接到對應的使用者空間。

    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. 為目前連接到網域並供所有使用者使用的來源 Amazon EFS 磁碟區新增變數。需要網域的 Amazon 虛擬私有雲資訊,才能確保在具EFS有相同安全群組組態的相同 Amazon VPC 和子網路中建立目標 Amazon。

    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. 使用相同的安全群組組態,在與來源 Amazon EFS 磁碟區相同的 Amazon VPC 和子網路中建立 Amazon EFS 掛載目標。掛載目標需要幾分鐘的時間才能使用。

    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. 創建 Amazon EFS 源和目的地位置 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. 允許來源和目標網路檔案系統 (NFS) 掛載之間的流量。建立新網域時,會建 SageMaker 立 2 個安全性群組。

    • NFS僅包含輸入流量的輸入安全性群組。

    • NFS只有輸出流量的輸出安全性群組。

    來源和目標NFS會置於相同的安全性群組內。您可以允許這些掛載之間的流量 AWS Management Console 或 AWS CLI.

    • 允許來自 AWS Management Console

      1. 登入 AWS Management Console 並在打開 Amazon VPC 控制台https://console.aws.amazon.com/vpc/

      2. 選擇 Security Groups (安全群組)。

      3. 在「安全群組」頁面上搜尋現有網域的 ID。

        d-xxxxxxx

        結果應傳回名稱中包含網域 ID 的兩個安全群組。

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

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

      4. 選取輸入安全性群組 ID。這會開啟新頁面,其中包含有關安全性群組的詳細資訊。

      5. 選取 [輸出規則] 索引標籤。

      6. 選取 [編輯輸出規則]。

      7. 使用下列值更新現有的輸出規則或新增輸出規則:

        • 類型:NFS

        • 通訊協定:TCP

        • 連接埠範圍

        • 目的地: security-group-for-outbound-nfs-domain-id | security-group-id

      8. 選擇儲存規則

      9. 選取輸入規則索引標籤。

      10. 選取 [編輯輸入規則]。

      11. 使用下列值更新現有的輸入規則或新增輸出規則:

        • 類型:NFS

        • 通訊協定:TCP

        • 連接埠範圍

        • 目的地: security-group-for-outbound-nfs-domain-id | security-group-id

      12. 選擇儲存規則

    • 允許來自 AWS CLI

      1. 使用下列值更新安全群組輸入和輸出規則:

        • 通訊協定:TCP

        • 連接埠範圍

        • 群組識別碼:輸入安全性群組 ID 或輸出安全性群組識別碼

        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. 將輸入和輸出安全群組新增到來源和目標 Amazon EFS 掛載目標。這允許兩個 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. 創建一個 AWS DataSync 任務。這將返回一個任務,ARN該任務可用於隨選或作為常規節奏的一部分運行任務。

    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. 開始一個 AWS DataSync 將資料從來源 Amazon 自動複製EFS到目標 Amazon EFS 掛載的任務。這不會保留檔案的POSIX許可,允許使用者從目標 Amazon EFS 掛載讀取,但不能寫入檔案。

    aws datasync start-task-execution --task-arn $DATASYNC_TASK_ARN
  8. 在根層級在網域上掛載目標 Amazon EFS 磁碟區。

    aws sagemaker update-domain --domain-id $SOURCE_DOMAIN_ID \ --default-user-settings '{"CustomFileSystemConfigs": [{"EFSFileSystemConfig": {"FileSystemId": "'"$TARGET_EFS"'", "FileSystemPath": "/"}}]}'
  9. 使用前綴覆蓋每個用戶配FileSystemPath置文件。前綴包括由創建的UID用戶 SageMaker。這樣可以確保用戶只能訪問其數據並防止交叉授粉。在網域中建立空間並將目標 Amazon EFS 磁碟區掛接到應用程式時,使用者的前置詞會覆寫網域前置詞。因此, SageMaker 只會在使用者的應用程式上掛載/user-id目錄。

    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. 然後,使用者可以在啟動應用程式時選取自訂 Amazon EFS 檔案系統。如需詳細資訊,請參閱 JupyterLab 使用者指南在 Studio 中啟動程式碼編輯器應用程式

在這種方法中,您可以使用 Amazon EFS 到 Amazon S3 AWS DataSync 任務:將工作室經典 Amazon EFS 磁碟區的內容一次複製到 Amazon S3 儲存貯體,或按照定期步驟將使用者的資料複製到其私有空間的 Amazon 磁碟區,然後建立生命週期組態以將使用者的資料從 Amazon S3 複製到其私有空間的 Amazon EBS 磁碟區。

注意

此方法僅適用於具有互聯網訪問權限的域。

  1. 從包含要移轉的資料的網域中設定來源 Amazon EFS 磁碟區 ID。

    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. 設置目標 Amazon S3 存儲桶名稱。如需建立 Amazon S3 儲存貯體的相關資訊,請參閱建立儲存貯體。使用的值區必須具有如中所述的CORS策略(選擇性) 更新 CORS 政策以存取 Amazon S3 儲存貯體。網域中的使用者也必須擁有存取 Amazon S3 儲存貯體的許可。

    在這個例子中,我們將文件複製到名為前綴studio-new。如果您使用單一 Amazon S3 儲存貯體遷移多個網域,請使用studio-new/<domain-id>前綴來限制使用的檔案的許可IAM。

    export BUCKET_NAME=s3-bucket-name export S3_DESTINATION_PATH=studio-new
  3. 建立可提供的信任原則 AWS DataSync 權限來承擔您的帳戶的執行角色。

    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. 建立IAM角色並附加信任原則。

    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. 創建一個安全組以授予對 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. 創建一個源 Amazon EFS 位置 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. 創建一個目標 Amazon S3 位置 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. 創建一個 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. 開始 AWS DataSync 任務。此任務會自動將資料從來源 Amazon EFS 磁碟區複製到目標 Amazon S3 儲存貯體。等待任務完成。

    aws datasync start-task-execution --task-arn $TASK_ARN
  10. 檢查的狀態 AWS DataSync 任務以驗證它是否完成。傳遞上一個步驟中ARN傳回的。

    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. 之後 AWS DataSync 任務完成後,清理以前創建的資源。

    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. 從您的本機機器,藉由以下內容建立一個名為 on-start.sh 的檔案。此指令碼會將 Amazon Amazon S3 中使用者的 Amazon EFS 主目錄複製到 Studio 中使用者的 Amazon EBS 磁碟區,並為每個使用者設定檔建立前置詞。

    #!/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. 將您的腳本轉換為 base64 格式。此要求可防止由於間距和換行編碼而發生的錯誤。指令碼類型可以是JupyterLabCodeEditor

    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. 在使用指令碼之前,請先驗證下列事項:

    • Amazon EBS 磁碟區足夠大,可以存放您要匯出的物件。

    • 您不會遷移隱藏的檔案和資料夾,例.condarc.bashrc,如果您不打算這麼做。

    • 所以此 AWS Identity and Access Management (IAM) 與 Studio 使用者設定檔相關聯的執行角色已將政策設定為僅存取 Amazon S3 中個別的主目錄。

  15. 使用指令碼建立生命週期組態。

    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. 將附加LCC到您的網域。

    aws sagemaker update-domain \ --domain-id $SOURCE_DOMAIN_ID \ --default-user-settings ' {"JupyterLabAppSettings": {"LifecycleConfigArns": [ "lifecycle-config-arn" ] } }'
  17. 然後,使用者可以在啟動應用程式時選取LCC指令碼。如需詳細資訊,請參閱 JupyterLab 使用者指南在 Studio 中啟動程式碼編輯器應用程式。這會自動將 Amazon S3 中的檔案同步到 Amazon EBS 儲存空間中的使用者空間。

從資料牧馬人遷移資料流

如果您之前曾在 Amazon 工作 SageMaker 室傳統版中使用 Amazon SageMaker 資料牧馬人進行資料準備任務,您可以遷移到新的 Amazon 工作 SageMaker 室,並在 Amazon Canvas 中存取最新版本的資料牧馬人。 SageMaker SageMaker Canvas 中的數據牧馬人為您提供增強的用戶體驗,並使用最新功能,例如自然語言界面和更快的性能。

您可以隨時登入 SageMaker Canvas,開始使用全新的數據牧馬人體驗。如需詳細資訊,請參閱開始使用 Amazon SageMaker 畫布

如果您已將資料流程檔案儲存在先前使用的 Studio Classic 中,則可以上載至 Studio,然後將流程檔案匯入 Canvas。您可以使用下列移轉選項:

  • 一鍵式遷移:登入 Canvas 時,您可以使用一次性匯入選項來代表您移轉所有流程檔案。

  • 手動遷移:您可以手動將流程檔案匯入 Canvas。從工作室經典版,您可以將檔案匯出到 Amazon S3,或將檔案下載到您的本機電腦。然後,登入 SageMaker Canvas 應用程式、匯入流程檔案,並繼續資料準備工作。

下列指南說明移轉的先決條件,以及如何使用單鍵或手動選項移轉資料流程檔案。

必要條件

開始移轉流程檔案之前,請檢閱下列先決條件。

步驟 1. 移轉網域並授予權限

在移轉資料流程檔案之前,您需要遵循從 Amazon SageMaker 工作室經典遷移指南的特定步驟,以確保您的使用者設定檔 AWS IAM執行角色具有必要的權限。請遵循先決條件,然階段 1:將 UI 從工作室經典版遷移到工作室後再繼續操作,其中說明如何授與必要權限、將 Studio 設定為新體驗,以及移轉現有網域。

具體而言,您必須擁有建立 SageMaker Canvas 應用程式和使用 SageMaker Canvas 資料準備功能的權限。若要取得這些權限,您可以:

確保對工作室和 SageMaker 畫布使用相同的用戶配置文件。

完成遷移指南中概述的先決條件後,您應該擁有一個具有透過 Studio 存取 SageMaker Canvas 所需權限的新網域。

步驟 2. (選擇性) 準備一個 Amazon S3 位置

如果您正在進行手動遷移,並計劃使用 Amazon S3 傳輸流程檔案,而不是使用本機下載選項,您的帳戶中應該有一個要用來存放流程檔案的 Amazon S3 儲存貯體。

一鍵式遷移方法

SageMaker Canvas 提供一次性匯入選項,可將您的資料流程從 Studio 傳統版中的資料牧馬人移轉至畫布中的資料牧馬人。 SageMaker 只要您的工作室經典版和畫布應用程式共用相同的 Amazon EFS 儲存磁碟區,您就可以從畫布按一下滑鼠移轉。這個簡化的流程無需手動匯出和匯入步驟,而且您可以一次匯入所有流程。

請使用下列程序來移轉所有流程檔案:

  1. 開啟您最新版本的工作室。

  2. 在 Studio 中,在左側導覽窗格中,選擇 [資料] 下拉式功能表。

  3. 從導覽選項中,選擇資料牧馬人。

  4. 在「資料牧馬人」頁面上,選擇「在畫布上執行」。如果您已成功設定權限,這會為您建立 Canvas 應用程式。Canvas 應用程序可能需要幾分鐘才能準備就緒。

  5. 當畫布準備就緒時,選擇「在畫布中打開」。

  6. 畫布會開啟至「資料牧馬人」頁面,頁面頂端會出現一個橫幅,顯示「從 Studio Classic 中的資料牧馬人匯入資料流程到畫布」。這是一次性導入。進一步了解。在橫幅中,選擇「全部匯入」。

    警告

    如果您關閉橫幅通知,您將無法再重新開啟或使用單鍵遷移方法。

隨即出現快顯通知,指出畫布正在從 Studio 傳統匯入流程檔案。如果匯入完全成功,您會收到另一則通知,告知已匯入流程檔案X數量,並且您可以在 Canvas 應用程式的 Data Wrangler 頁面上看到流程檔案。任何匯入的流程檔案與 Canvas 應用程式中的現有資料流程具有相同名稱,都會以後綴重新命名。您可以開啟資料流程以確認其外觀如預期般。

如果您的任何流程檔案無法成功匯入,您會收到匯入部分成功或失敗的通知。選擇 [檢視通知訊息上的錯誤] 以檢查個別錯誤訊息,以取得有關如何重新格式化任何格式錯誤的流程檔案的指引。

匯入流程檔案後,您現在應該可以繼續使用資料牧馬人在 Canvas 中 SageMaker 準備資料。

手動移轉方法

以下各節說明如何在單鍵遷移方法無效的情況下將流程檔案手動匯入 Canvas。

從工作室傳統版匯出流程檔

注意

如果您已按照中的說明將工作室典型資料遷移到 Amazon S3階段 3:(可選)將數據從工作室傳統遷移到工作室,則可以跳過此步驟,直接前往從存放工作室傳統資料的 Amazon S3 位置匯入流程檔案的將流程檔案匯入畫布章節。

您可以透過將流程檔案儲存到 Amazon S3 或下載到本機電腦來匯出流程檔案。在下一個步驟中將流程檔案匯入 SageMaker Canvas 時,如果選擇本機上傳選項,則一次只能上傳 20 個流程檔案。如果您要匯入大量流程檔案,建議您改用 Amazon S3。

請按照方法 1:使用 Amazon S3 傳輸流程檔案或中的指示繼方法 2:使用本機電腦傳輸流程檔案續操作。

方法 1:使用 Amazon S3 傳輸流程檔案

使用此方法,您可以使用 Amazon S3 做為工作室傳統版中的資料牧馬人和 SageMaker 畫布中的資料牧馬人 (透過最新版本的 Studio 存取) 之間的中介。您可以將流程檔案從工作室傳統匯出到 Amazon S3,然後在下一個步驟中,透過工作室存取畫布,並從 Amazon S3 匯入流程檔案。

請確定已準備好 Amazon S3 儲存貯體做為流程檔案的儲存位置。

請使用下列程序將流程檔案從工作室典型匯出到 Amazon S3:

  1. 經典開放式工作室。

  2. 通過執行以下操作打開一個新的終端:

    1. 在頂端導覽列上,選擇 [檔案]。

    2. 在關聯式功能表中,將游標暫留在 [新增] 上,然後選取 [終端機

  3. 默認情況下,終端應該在您的主目錄中打開。導覽至包含您要移轉的所有流程檔案的資料夾。

  4. 使用下列命令將所有流程檔案同步到指定的 Amazon S3 位置。取代{bucket-name}{folder}使用前往所需 Amazon S3 位置的路徑。如需有關指令和參數的詳細資訊,請參閱「」中的 sync 指令。 AWS AWS CLI 指令參考。

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

    如果您使用自己的 AWS KMS key,然後改用下列指令來同步處理檔案,並指定您的KMS金鑰 ID。確定使用者的IAM執行角色 (此角色應與步驟 1 中使用的相同角色)。 遷移域並授予上述先決條件的權限)已被授予使用KMS密鑰的訪問權限。

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

您的流程檔案現在應該已匯出。您可以檢查 Amazon S3 儲存貯體,以確保流程檔案同步成功。

若要以最新版本的資料牧馬人匯入這些檔案,請遵循中的步驟。將流程檔案匯入畫布

方法 2:使用本機電腦傳輸流程檔案

使用此方法,您可以將流程檔案從 Studio 傳統版下載到本機電腦。您可以直接下載文件,也可以將其壓縮為 zip 存檔。然後,您可以在本機解壓縮 zip 檔案 (如果適用),登入 Canvas,然後透過從本機電腦上傳這些檔案來匯入流程檔案。

請使用下列程序從 Studio 傳統版下載流程檔案:

  1. 經典開放式工作室。

  2. (選擇性) 如果要將多個流程檔案壓縮為 zip 歸檔並一次下載所有檔案,請執行以下操作:

    1. 在「工作室經典」的頂部導航欄上,選擇「文件」。

    2. 在關聯式功能表中,將游標暫留在 [新增] 上,然後選取 [終端機

    3. 依預設,終端機會在您的主目錄中開啟。導覽至包含您要移轉的所有流程檔案的資料夾。

    4. 使用下列指令將目前目錄中的流程檔案封裝為 zip 檔案。該命令排除任何隱藏的文件:

      find . -not -path "*/.*" -name "*.flow" -print0 | xargs -0 zip my_archive.zip
  3. 執行下列動作,將 zip 歸檔或個別流程檔案下載到本機電腦:

    1. 在「Studio 經典」的左側導覽窗格中,選擇「檔案瀏覽器」。

    2. 在檔案瀏覽器中找到您要下載的檔案。

    3. 右鍵單擊該文件,然後在上下文菜單中選擇下載

該文件應下載到您的本地計算機。如果您將它們打包為 zip 歸檔,請在本地解壓縮文件。解壓縮檔案之後,若要以最新版本的 Data Wrangler 匯入這些檔案,請依照中的步驟執行。將流程檔案匯入畫布

將流程檔案匯入畫布

匯出流程檔案後,透過 Studio 存取畫布並匯入檔案。

請使用下列步驟將流程檔案匯入 Canvas:

  1. 開啟您最新版本的工作室。

  2. 在 Studio 中,在左側導覽窗格中,選擇 [資料] 下拉式功能表。

  3. 從導覽選項中,選擇資料牧馬人。

  4. 在「資料牧馬人」頁面上,選擇「在畫布上執行」。如果您已成功設定權限,這會為您建立 Canvas 應用程式。Canvas 應用程序可能需要幾分鐘才能準備就緒。

  5. 當畫布準備就緒時,選擇「在畫布中打開」。

  6. 畫布會開啟至「資料牧馬人」頁面。在頂端窗格中,選擇 [匯入資料流程]。

  7. 對於資料來源,請選擇 Amazon S3本機上傳

  8. 從 Amazon S3 儲存貯體選取流程檔案,或從本機電腦上傳檔案。

    注意

    對於本機上傳,您一次最多可以上傳 20 個流程檔案。對於較大的進口,請使用 Amazon S3。如果您選取要匯入的資料夾,也會匯入子資料夾中的任何流程檔案。

  9. 選擇匯入資料

如果匯入成功,您會收到已成功匯入流程檔案X數目的通知。

如果您的流程檔案無法成功匯入,您會在 SageMaker Canvas 應用程式中收到通知。選擇 [檢視通知訊息上的錯誤] 以檢查個別錯誤訊息,以取得有關如何重新格式化任何格式錯誤的流程檔案的指引。

完成匯入流程檔案後,移至 SageMaker Canvas 應用程式的「資料牧馬人」頁面以檢視您的資料流程。您可以嘗試開啟資料流程,以確認其看起來如預期般。