View a markdown version of this page

設定遠端 IDE - Amazon SageMaker AI

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

設定遠端 IDE

管理員完成 中的指示後使用遠端存取將您的遠端 IDE 連接到 SageMaker 空間,您可以將遠端 IDE 連接到遠端 SageMaker 空間。

設定您的本機環境

在本機電腦上安裝您偏好的遠端 IDE:

如需版本需求的資訊,請參閱 IDE 版本需求

連線至遠端 IDE

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

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

  1. 啟動 Amazon SageMaker Studio

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

  3. 針對您偏好的 IDE,選擇在 VS 程式碼中開啟在 Kiro 中開啟或在游標中開啟按鈕。確保本機電腦上已安裝您偏好的 IDE。

  4. 出現提示時,請確認 開啟您的 IDE。您的 IDE 會開啟另一個快顯視窗進行確認。完成後,即會建立遠端連線。

遠端 IDE 中的方法 2: AWS Toolkit

使用下列程序,使用 AWS Toolkit for Visual Studio Code建立連線。此方法適用於 VS Code、Kiro 和 Cursor。

  1. 開啟遠端 IDE (VS 程式碼、Kiro 或游標)。

  2. 開啟 AWS Toolkit 擴充功能。

  3. 連線到 AWS

  4. 在 AWS Explorer 中,展開 SageMaker AI,然後展開 Studio

  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 } # Build AWS CLI command $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