本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定本機 Visual Studio Code
在管理員完成 使用遠端存取將本機 Visual Studio 程式碼連線至 SageMaker 空間 中的指示之後,您可以將本機 Visual Studio Code 連線到遠端 SageMaker 空間。
設定您的本機環境
在本機電腦上安裝 Visual Studio Code。如需要求的相關資訊,請參閱 使用遠端存取將本機 Visual Studio 程式碼連線至 SageMaker 空間。
連線至您的本機 VS Code
在您可以建立從本機 Visual Studio Code 到遠端 SageMaker 空間的連線之前,您的管理員必須 設定遠端存取。您的管理員會為您設定特定方法來建立連線。選擇為您設定的方法。
方法 1:來自 Studio UI 的深層連結
使用下列程序,使用深層連結建立連線。
-
啟動 Amazon SageMaker Studio。
-
在 Studio UI 中,導覽至您的空間。
-
選擇開啟空間的方式。
-
選擇 VS Code。當您這麼做時,系統可能會提示您開啟 Visual Studio Code。當您選擇這樣做時,您的本機 VS Code 即會開啟,並顯示另一個快顯視窗來確認。完成後,即會建立遠端連線。
使用下列程序,使用 AWS Toolkit for Visual Studio Code 建立連線。
-
開啟 VS Code。
-
開啟 AWSToolkit 擴充功能。
-
連線到 AWS。
-
在 AWSExplorer 中,展開 SageMaker AI。
-
尋找您的 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"
-
讓指令碼可執行:
chmod +x /home/user/sagemaker_connect.sh
-
設定 $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 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
}
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