기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
로컬 Visual Studio Code 설정
관리자가 원격 액세스를 사용하여 로컬 Visual Studio Code를 SageMaker 스페이스에 연결의 지침을 완료하고 나면 사용자가 로컬 Visual Studio Code를 원격 SageMaker 스페이스에 연결할 수 있습니다.
로컬 환경 설정
로컬 머신에 Visual Studio Code를 설치합니다. 요구 사항에 대한 자세한 내용은 원격 액세스를 사용하여 로컬 Visual Studio Code를 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를 엽니다.
-
AWS도구 키트 확장을 엽니다.
-
AWS에 연결합니다.
-
AWS탐색기에서 SageMaker AI를 확장합니다.
-
Studio 스페이스를 찾습니다.
-
스페이스 옆에 있는 연결 아이콘을 선택하여 시작합니다.
방법 3: SSH CLI를 통해 터미널에서 연결
SSH CLI를 사용하여 연결을 설정하는 절차를 보려면 다음 플랫폼 옵션 중 하나를 선택합니다.
- Linux/macOS
-
쉘 스크립트를 생성합니다(예: /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