設定本機 Visual Studio Code - Amazon SageMaker AI

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

設定本機 Visual Studio Code

在管理員完成 使用遠端存取將本機 Visual Studio 程式碼連線至 SageMaker 空間 中的指示之後,您可以將本機 Visual Studio Code 連線到遠端 SageMaker 空間。

設定您的本機環境

在本機電腦上安裝 Visual Studio Code。如需要求的相關資訊,請參閱 使用遠端存取將本機 Visual Studio 程式碼連線至 SageMaker 空間

連線至您的本機 VS Code

在您可以建立從本機 Visual Studio Code 到遠端 SageMaker 空間的連線之前,您的管理員必須 設定遠端存取。您的管理員會為您設定特定方法來建立連線。選擇為您設定的方法。

使用下列程序,使用深層連結建立連線。

  1. 啟動 Amazon SageMaker Studio

  2. 在 Studio UI 中,導覽至您的空間。

  3. 選擇開啟空間的方式

  4. 選擇 VS Code。當您這麼做時,系統可能會提示您開啟 Visual Studio Code。當您選擇這樣做時,您的本機 VS Code 即會開啟,並顯示另一個快顯視窗來確認。完成後,即會建立遠端連線。

方法 2:AWS Toolkit for Visual Studio Code

使用下列程序,使用 AWS Toolkit for Visual Studio Code 建立連線。

  1. 開啟 VS Code。

  2. 開啟 AWSToolkit 擴充功能。

  3. 連線到 AWS

  4. 在 AWSExplorer 中,展開 SageMaker AI

  5. 尋找您的 Studio 空間。

  6. 選擇空間旁邊的連線圖示來將其啟動。

    注意
    • 如果尚未連線,請停止並重新啟動 Toolkit for Visual Studio 中的空間,以啟用遠端存取。

    • 如果空間未使用支援的執行個體大小,系統會要求您變更執行個體。

方法 3:透過 SSH CLI 從終端連線

選擇下列其中一個平台選項,檢視使用 SSH CLI 建立連線的程序。

注意
Linux/macOS

建立 shell 指令碼 (例如 /home/user/sagemaker_connect.sh):

#!/bin/bash # Disable the -x option if printing each command is not needed. set -exuo pipefail SPACE_ARN="$1" AWS_PROFILE="${2:-}" # Validate ARN and extract region if [[ "$SPACE_ARN" =~ ^arn:aws[-a-z]*:sagemaker:([a-z0-9-]+):[0-9]{12}:space\/[^\/]+\/[^\/]+$ ]]; then AWS_REGION="${BASH_REMATCH[1]}" else echo "Error: Invalid SageMaker Studio Space ARN format." exit 1 fi # Optional profile flag PROFILE_ARG=() if [[ -n "$AWS_PROFILE" ]]; then PROFILE_ARG=(--profile "$AWS_PROFILE") fi # Start session START_SESSION_JSON=$(aws sagemaker start-session \ --resource-identifier "$SPACE_ARN" \ --region "${AWS_REGION}" \ "${PROFILE_ARG[@]}") # Extract fields using grep and sed SESSION_ID=$(echo "$START_SESSION_JSON" | grep -o '"SessionId": "[^"]*"' | sed 's/.*: "//;s/"$//') STREAM_URL=$(echo "$START_SESSION_JSON" | grep -o '"StreamUrl": "[^"]*"' | sed 's/.*: "//;s/"$//') TOKEN=$(echo "$START_SESSION_JSON" | grep -o '"TokenValue": "[^"]*"' | sed 's/.*: "//;s/"$//') # Validate extracted values if [[ -z "$SESSION_ID" || -z "$STREAM_URL" || -z "$TOKEN" ]]; then echo "Error: Failed to extract session information from sagemaker start session response." exit 1 fi # Call session-manager-plugin session-manager-plugin \ "{\"streamUrl\":\"$STREAM_URL\",\"tokenValue\":\"$TOKEN\",\"sessionId\":\"$SESSION_ID\"}" \ "$AWS_REGION" "StartSession"
  1. 讓指令碼可執行:

    chmod +x /home/user/sagemaker_connect.sh
  2. 設定 $HOME/.ssh/config 以新增下列項目:

Host space-name HostName 'arn:PARTITION:sagemaker:us-east-1:111122223333:space/domain-id/space-name' ProxyCommand '/home/user/sagemaker_connect.sh' '%h' ForwardAgent yes AddKeysToAgent yes StrictHostKeyChecking accept-new

例如,PARTITION 可以是 aws

如果您需要使用具名AWS憑證描述檔,請變更代理命令,如下所示:

ProxyCommand '/home/user/sagemaker_connect.sh' '%h' YOUR_CREDENTIAL_PROFILE_NAME
  • 透過 SSH 連線或執行 SCP 命令:

ssh space-name scp file_abc space-name:/tmp/
Windows

Windows 的先決條件:

  • PowerShell 5.1 或更新版本

  • SSH 用戶端 (建議使用 OpenSSH)

建立 PowerShell 指令碼 (例如 C:\Users\user-name\sagemaker_connect.ps1):

# sagemaker_connect.ps1 param( [Parameter(Mandatory=$true)] [string]$SpaceArn, [Parameter(Mandatory=$false)] [string]$AwsProfile = "" ) # Enable error handling $ErrorActionPreference = "Stop" # Validate ARN and extract region if ($SpaceArn -match "^arn:aws[-a-z]*:sagemaker:([a-z0-9-]+):[0-9]{12}:space\/[^\/]+\/[^\/]+$") { $AwsRegion = $Matches[1] } else { Write-Error "Error: Invalid SageMaker Studio Space ARN format." exit 1 } # BuildAWS CLIcommand $awsCommand = @("sagemaker", "start-session", "--resource-identifier", $SpaceArn, "--region", $AwsRegion) if ($AwsProfile) { $awsCommand += @("--profile", $AwsProfile) } try { # Start session and capture output Write-Host "Starting SageMaker session..." -ForegroundColor Green $startSessionOutput = & aws @awsCommand # Try to parse JSON response try { $sessionData = $startSessionOutput | ConvertFrom-Json } catch { Write-Error "Failed to parse JSON response: $_" Write-Host "Raw response was:" -ForegroundColor Yellow Write-Host $startSessionOutput exit 1 } $sessionId = $sessionData.SessionId $streamUrl = $sessionData.StreamUrl $token = $sessionData.TokenValue # Validate extracted values if (-not $sessionId -or -not $streamUrl -or -not $token) { Write-Error "Error: Failed to extract session information from sagemaker start session response." Write-Host "Parsed response was:" -ForegroundColor Yellow Write-Host ($sessionData | ConvertTo-Json) exit 1 } Write-Host "Session started successfully. Connecting..." -ForegroundColor Green # Create session manager plugin command $sessionJson = @{ streamUrl = $streamUrl tokenValue = $token sessionId = $sessionId } | ConvertTo-Json -Compress # Escape the JSON string $escapedJson = $sessionJson -replace '"', '\"' # Call session-manager-plugin & session-manager-plugin "$escapedJson" $AwsRegion "StartSession" } catch { Write-Error "Failed to start session: $_" exit 1 }
  • 設定 C:\Users\user-name\.ssh\config 以新增下列項目:

Host space-name HostName "arn:aws:sagemaker:us-east-1:111122223333:space/domain-id/space-name" ProxyCommand "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy RemoteSigned -File "C:\\Users\\user-name\\sagemaker_connect.ps1" "%h" ForwardAgent yes AddKeysToAgent yes User sagemaker-user StrictHostKeyChecking accept-new