로컬 Visual Studio Code 설정 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

로컬 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. 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. AWS도구 키트 확장을 엽니다.

  3. AWS에 연결합니다.

  4. AWS탐색기에서 SageMaker AI를 확장합니다.

  5. Studio 스페이스를 찾습니다.

  6. 스페이스 옆에 있는 연결 아이콘을 선택하여 시작합니다.

    참고
    • 아직 연결되지 않은 경우 Toolkit for Visual 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"
  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

예를 들어, PARTITIONaws일 수 있습니다.

명명된 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