View a markdown version of this page

设置远程 IDE - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置远程 IDE

管理员完成中的说明后通过远程访问将您的远程 IDE 连接到 SageMaker 空间,您可以将远程 IDE 连接到远程 SageMaker 空间。

设置本地环境

在本地计算机上安装首选的远程 IDE:

有关版本要求的信息,请参阅IDE 版本要求

Connect 连接到您的远程 IDE

在建立从远程 IDE 到远程 SageMaker 空间的连接之前,必须由管理员进行连接设置远程访问。您的管理员为您设置了一种特定的建立连接的方法。选择已为您设置的方法。

执行以下过程,使用深度链接建立连接。

  1. 启动 Amazon SageMaker Studio

  2. 在 Studio UI 中,导航到您的空间。

  3. 在首选 IDE 中选择 “在 VS Code 中打开”、“在 Kiro 中打开” 或 “在光标中打开” 按钮。确保您的首选 IDE 已安装在本地计算机上。

  4. 出现提示时,确认打开 IDE。您的 IDE 将打开并显示另一个弹出窗口进行确认。完成后,远程连接即建立。

方法 2: Amazon 远程 IDE 中的工具包

执行以下过程,使用 Amazon Toolkit for Visual Studio Code建立连接。此方法可用于 VS Code、Kiro 和 Cursor。

  1. 打开你的远程 IDE(VS Code、Kiro 或 Cursor)。

  2. 打开 Amazon 工具包扩展。

  3. 连接到 Amazon

  4. 在 Amazon 资源管理器中,展开 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

如果您需要使用已命名的 Amazon 凭据配置文件,请按如下方式更改代理命令:

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 Amazon 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