

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

# 원격 IDE 설정
<a name="remote-access-local-ide-setup"></a>

관리자가의 지침을 완료한 후 원격 IDE를 원격 SageMaker 스페이스에 연결할 [원격 액세스를 사용하여 원격 IDE를 SageMaker 스페이스에 연결](remote-access.md)수 있습니다.

**Topics**
+ [로컬 환경 설정](#remote-access-local-ide-setup-local-environment)
+ [원격 IDE에 연결](#remote-access-local-ide-setup-local-vs-code)
+ [인터넷 액세스 없이 서브넷을 사용하여 VPC에 연결](remote-access-local-ide-setup-vpc-no-internet.md)
+ [Studio 스페이스 필터링](remote-access-local-ide-setup-filter.md)

## 로컬 환경 설정
<a name="remote-access-local-ide-setup-local-environment"></a>

로컬 시스템에 원하는 원격 IDE를 설치합니다.
+ [Visual Studio Code](https://code.visualstudio.com/)
+ [Kiro](https://kiro.dev/)
+ [Cursor](https://cursor.com/home)

버전 요구 사항에 대한 자세한 내용은 섹션을 참조하세요[IDE 버전 요구 사항](remote-access.md#remote-access-ide-version-requirements).

## 원격 IDE에 연결
<a name="remote-access-local-ide-setup-local-vs-code"></a>

원격 IDE에서 원격 SageMaker 스페이스로의 연결을 설정하려면 먼저 관리자가를 설정해야 합니다[원격 액세스 설정](remote-access-remote-setup.md). 관리자는 사용자가 연결을 설정할 수 있도록 구체적인 방법을 설정합니다. 설정된 방법을 선택합니다.

**Topics**
+ [방법 1: Studio UI의 딥 링크](#remote-access-local-ide-setup-local-vs-code-method-1-deep-link-from-studio-ui)
+ [방법 2:원격 IDE의 AWS 도구 키트](#remote-access-local-ide-setup-local-vs-code-method-2-aws-toolkit-in-vs-code)
+ [방법 3: SSH CLI를 통해 터미널에서 연결](#remote-access-local-ide-setup-local-vs-code-method-3-connect-from-the-terminal-via-ssh-cli)

### 방법 1: Studio UI의 딥 링크
<a name="remote-access-local-ide-setup-local-vs-code-method-1-deep-link-from-studio-ui"></a>

다음 절차에 따라 딥 링크를 사용하여 연결을 설정합니다.

1. [Amazon SageMaker Studio를 실행](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html#studio-updated-launch-console)합니다.

1. Studio UI에서 스페이스로 이동합니다.

1. 원하는 IDE**에 대해 VS Code에서 열기**, **Kiro에서 열기** 또는 **커서에서 열기** 버튼을 선택합니다. 원하는 IDE가 로컬 컴퓨터에 이미 설치되어 있는지 확인합니다.

1. 메시지가 표시되면 IDE를 열 것인지 확인합니다. 확인을 위한 다른 팝업과 함께 IDE가 열립니다. 완료되면 원격 연결이 설정됩니다.

### 방법 2:원격 IDE의 AWS 도구 키트
<a name="remote-access-local-ide-setup-local-vs-code-method-2-aws-toolkit-in-vs-code"></a>

다음 절차에 따라 AWS Toolkit for Visual Studio Code을 사용하여 연결을 설정합니다. 이 메서드는 VS Code, Kiro 및 Cursor에서 사용할 수 있습니다.

1. 원격 IDE(VS Code, Kiro 또는 Cursor)를 엽니다.

1.  AWS 도구 키트 확장을 엽니다.

1. [AWS에 연결](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/connect.html)합니다.

1.  AWS 탐색기에서 **SageMaker AI**를 확장한 다음 **Studio**를 확장합니다.

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

1. 스페이스 옆에 있는 **연결** 아이콘을 선택하여 시작합니다.
**참고**  
아직 연결되지 않은 경우 Toolkit for Visual Studio에서 스페이스를 중지했다가 다시 시작하여 원격 액세스를 활성화합니다.
스페이스가 지원되는 [인스턴스 크기](https://docs.aws.amazon.com/sagemaker/latest/dg/remote-access.html#remote-access-instance-requirements)를 사용하지 않는 경우 인스턴스를 변경하라는 메시지가 표시됩니다.

### 방법 3: SSH CLI를 통해 터미널에서 연결
<a name="remote-access-local-ide-setup-local-vs-code-method-3-connect-from-the-terminal-via-ssh-cli"></a>

SSH CLI를 사용하여 연결을 설정하는 절차를 보려면 다음 플랫폼 옵션 중 하나를 선택합니다.

**참고**  
아래 지침을 따르기 전에 최신 버전의가 [로컬 시스템 사전 조건](remote-access.md#remote-access-local-prerequisites) 설치되어 있는지 확인합니다.
인 경우 계속하기 [이미지 요구 사항](remote-access.md#remote-access-image-requirements) 전에에 나열된 필수 종속성을 설치했는지 [기존 보유 이미지 사용(BYOI)](studio-updated-byoi.md)확인합니다.

------
#### [ 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
   ```

1. 다음 항목을 추가하도록 `$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 자격 증명 프로파일을](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html#cli-configure-files-using-profiles) 사용해야 하는 경우 다음과 같이 프록시 명령을 변경합니다.

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

------