

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

# 원격 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
```

------

# 인터넷 액세스 없이 서브넷을 사용하여 VPC에 연결
<a name="remote-access-local-ide-setup-vpc-no-internet"></a>

인터넷에 액세스할 수 없는 프라이빗 서브넷의 Studio 공간에 원격 IDE를 연결하기 전에 관리자에게이 있는지 확인합니다[VPC 내에서 인터넷 액세스 없이 서브넷에서 실행되도록 Studio 설정](remote-access-remote-setup-vpc-subnets-without-internet-access.md).

원격 IDE를 프라이빗 서브넷의 Studio 공간에 연결하는 옵션은 다음과 같습니다.
+ HTTP 프록시 설정(VS Code 및 Kiro에서 지원됨)
+ 사전 패키징된 원격 서버 및 확장(VS Code만 해당)

**중요**  
커서는 아웃바운드 인터넷 액세스 없이 프라이빗 서브넷의 Studio 공간에 연결하는 데 지원되지 않습니다.

**Topics**
+ [제어된 허용 목록이 있는 HTTP 프록시](#remote-access-local-ide-setup-vpc-no-internet-http-proxy-with-controlled-allow-listing)
+ [사전 패키징된 원격 서버 및 확장(VS Code만 해당)](#remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions)

## 제어된 허용 목록이 있는 HTTP 프록시
<a name="remote-access-local-ide-setup-vpc-no-internet-http-proxy-with-controlled-allow-listing"></a>

Studio 공간이 방화벽 또는 프록시 뒤에 있는 경우 관리자에게 IDE 서버 및 확장 관련 CDNs 및 엔드포인트에 대한 액세스를 허용하도록 요청합니다. 자세한 내용은 [제어된 허용 목록으로 HTTP 프록시 설정](remote-access-remote-setup-vpc-subnets-without-internet-access.md#remote-access-remote-setup-vpc-subnets-without-internet-access-setup-http-proxy-with-controlled-allow-listing) 단원을 참조하십시오.

------
#### [ VS Code ]

프록시 URL에 `remote.SSH.httpProxy` 또는 `remote.SSH.httpsProxy` 설정을 제공하여 VS Code 원격 개발을 위한 HTTP 프록시를 구성합니다.

**참고**  
원격 환경의 `curlrc` 및 파일에서 구성을 사용하려면 "Remote.SSH: Use Curl And Wget Configuration `wgetrc` Files"를 활성화하는 것이 좋습니다. 이는 SageMaker 스페이스의 해당 기본 위치에 배치된 `curlrc` 및 `wgetrc` 파일을 특정 사례를 활성화하는 데 사용할 수 있도록 하기 위한 것입니다.

------
#### [ Kiro ]

`aws.sagemaker.ssh.kiro.httpsProxy` 설정을 HTTP 또는 HTTPS 프록시 엔드포인트로 설정하여 Kiro 원격 개발을 위한 HTTP 프록시를 구성합니다.

Kiro에서 MCP(모델 컨텍스트 프로토콜) 서버를 사용하는 경우 MCP 서버 구성에 프록시 환경 변수도 추가해야 합니다.

```
"env": {
    "http_proxy": "${http_proxy}",
    "https_proxy": "${https_proxy}"
}
```

------

이 옵션은 HTTP 프록시를 설정할 수 있는 경우 작동하며 일부 확장에는 퍼블릭 엔드포인트가 필요하므로 추가 확장을 유연하게 설치할 수 있도록 합니다.

## 사전 패키징된 원격 서버 및 확장(VS Code만 해당)
<a name="remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions"></a>

**참고**  
이 옵션은 Visual Studio Code에만 사용할 수 있습니다. Kiro 및 Cursor는 사전 패키징된 원격 서버 설정을 지원하지 않습니다.

Studio 스페이스가 외부 VS Code 원격 서버 및 확장 프로그램을 다운로드하기 위해 엔드포인트에 액세스할 수 없는 경우 사전 패키징할 수 있습니다. 이 접근 방식을 사용하면 관리자가 특정 버전의 VS Code에 대한 `.VS Code-server` 디렉터리가 포함된 tarball을 내보낼 수 있습니다. 그런 다음, 관리자가 SageMaker AI 수명 주기 구성(LCC) 스크립트를 사용하여 사용자의 홈 디렉터리(`/home/sagemaker-user`)에 tarball을 복사하고 추출합니다. 자세한 내용은 [사전 패키징된 원격 서버 및 확장 설정(VS Code만 해당)](remote-access-remote-setup-vpc-subnets-without-internet-access.md#remote-access-remote-setup-vpc-subnets-without-internet-access-setup-pre-packaged-vs-code-remote-server-and-extensions) 단원을 참조하십시오.

**VS Code 원격 서버 및 확장에 사전 패키징을 사용하기 위한 지침**

1. 로컬 머신에 VS Code를 설치합니다.

1. SageMaker 스페이스에 연결하는 경우:
   + 기본 프로필을 사용하여 사전 패키징된 확장과의 호환성을 보장합니다. 아니면 Studio 스페이스에 연결한 후 다운로드한 VSIX 파일을 사용하여 확장 프로그램을 설치해야 합니다.
   + 스페이스를 시작할 때 스페이스에 연결할 VS Code 버전에 해당하는 LCC 스크립트를 선택합니다.

### VS Code 원격 서버 및 확장 사전 패키징을 위한 Dockerfile 사용 예시
<a name="remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-dockerfile"></a>

다음은 원격 액세스가 가능하고 인터넷이 활성화된 스페이스를 생성할 수 없는 경우 SSH 서버가 사전 설치된 로컬 컨테이너를 시작하기 위한 샘플 Dockerfile입니다.

**참고**  
이 예시에서 SSH 서버는 인증이 필요하지 않으며 VS Code 원격 서버를 내보내는 데만 사용됩니다.
컨테이너는 x64 아키텍처에서 구축되고 실행되어야 합니다.

```
FROM amazonlinux:2023

# Install OpenSSH server and required tools
RUN dnf install -y \
    openssh-server \
    shadow-utils \
    passwd \
    sudo \
    tar \
    gzip \
    && dnf clean all

# Create a user with no password
RUN useradd -m -s /bin/bash sagemaker-user && \
    passwd -d sagemaker-user

# Add sagemaker-user to sudoers via wheel group
RUN usermod -aG wheel sagemaker-user && \
    echo 'sagemaker-user ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/sagemaker-user && \
    chmod 440 /etc/sudoers.d/sagemaker-user

# Configure SSH to allow empty passwords and password auth
RUN sed -i 's/^#\?PermitEmptyPasswords .*/PermitEmptyPasswords yes/' /etc/ssh/sshd_config && \
    sed -i 's/^#\?PasswordAuthentication .*/PasswordAuthentication yes/' /etc/ssh/sshd_config

# Generate SSH host keys
RUN ssh-keygen -A

# Expose SSH port
EXPOSE 22

WORKDIR /home/sagemaker-user
USER sagemaker-user

# Start SSH server
CMD ["bash"]
```

다음 명령을 사용하여 컨테이너를 구축하고 실행합니다.

```
# Build the image
docker build . -t remote_server_export

# Run the container
docker run --rm -it -d \
  -v /tmp/remote_access/.VS Code-server:/home/sagemaker-user/.VS Code-server \
  -p 2222:22 \
  --name remote_server_export \
  remote_server_export
  
# change the permisson for the mounted folder
docker exec -i remote_server_export \
       bash -c 'sudo chown sagemaker-user:sagemaker-user ~/.VS Code-server'

# start the ssh server in the container 
docker exec -i remote_server_export bash -c 'sudo /usr/sbin/sshd -D &'
```

다음 명령을 사용하여 연결합니다.

```
ssh sagemaker-user@localhost -p 2222
```

이 컨테이너를 연결하려면 먼저 `.ssh/config` 파일에서 다음을 구성합니다. 그런 다음, 연결 시 원격 SSH 사이드 패널에서 `remote_access_export`가 호스트 이름인 것을 볼 수 있습니다. 예제:

```
Host remote_access_export
  HostName localhost
  User=sagemaker-user
  Port 2222
  ForwardAgent yes
```

`/tmp/remote_access/.VS Code-server`를 아카이브하고 사전 패키징된 VS Code 원격 서버 및 확장의 단계를 수행하여 확장을 연결하고 설치합니다. 압축을 푼 후 `.VS Code-server` 폴더가 상위 폴더로 표시되는지 확인합니다.

```
cd /tmp/remote_access/
sudo tar -czvf VS Code-server-with-extensions-for-1.100.2.tar.gz .VS Code-server
```

### 예시 LCC 스크립트(LCC-install-VS Code-server-v1.100.2)
<a name="remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-lcc"></a>

다음은 특정 버전의 VS Code 원격 서버를 설치하는 방법의 예입니다.

```
#!/bin/bash

set -x

remote_server_file=VS Code-server-with-extensions-for-1.100.2.tar.gz

if [ ! -d "${HOME}/.VS Code-server" ]; then
    cd /tmp
    aws s3 cp s3://S3_BUCKET/remote_access/${remote_server_file} .
    tar -xzvf ${remote_server_file}
    mv .VS Code-server "${HOME}"
    rm ${remote_server_file}
else
    echo "${HOME}/.VS Code-server already exists, skipping download and install."
fi
```

# Studio 스페이스 필터링
<a name="remote-access-local-ide-setup-filter"></a>

필터링을 사용하여 AWS Toolkit for Visual Studio Code 탐색기에 관련된 Amazon SageMaker AI 스페이스만 표시할 수 있습니다. 다음은 수동 필터링 및 자동 필터링에 대한 정보를 제공합니다. 수동 및 자동 필터링의 정의에 대한 자세한 내용은 [필터링 개요](remote-access-remote-setup-filter.md#remote-access-remote-setup-filter-overview) 섹션을 참조하세요.

이 설정은 [방법 2:원격 IDE의 AWS 도구 키트](remote-access-local-ide-setup.md#remote-access-local-ide-setup-local-vs-code-method-2-aws-toolkit-in-vs-code) 메서드를 사용하여 원격 IDE에서 Amazon SageMaker Studio 스페이스에 연결할 때만 적용됩니다. 자세한 정보는 [원격 액세스 설정](remote-access-remote-setup.md)을 참조하세요.

**Topics**
+ [수동 필터링](#remote-access-local-ide-setup-filter-manual)
+ [IAM 자격 증명을 사용하여 로그인할 때 자동 필터링 설정](#remote-access-local-ide-setup-filter-automatic-IAM-credentials)

## 수동 필터링
<a name="remote-access-local-ide-setup-filter-manual"></a>

표시된 스페이스를 수동으로 필터링하려면 다음 단계를 따르세요.
+ 원격 IDE를 열고 Toolkit for VS Code 사이드 패널 탐색기로 이동합니다.
+ **SageMaker AI** 섹션을 찾습니다.
+ SageMaker AI 섹션 헤더 오른쪽에 있는 필터 아이콘을 선택합니다. 그러면 드롭다운 메뉴가 열립니다.
+ 드롭다운 메뉴에서 스페이스를 표시할 사용자 프로필을 선택합니다.

## IAM 자격 증명을 사용하여 로그인할 때 자동 필터링 설정
<a name="remote-access-local-ide-setup-filter-automatic-IAM-credentials"></a>

자동 필터링은 로그인 중 인증 방법에 따라 달라집니다. 자세한 내용은 [Toolkit for VS Code 사용 설명서의 Toolkit AWS 에서에 연결을](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/connect.html#connect-to-aws) 참조하세요.

**IAM 자격 증명**을 사용하여 인증하고 연결할 때 자동 필터링에는 [IAM 자격 증명으로 연결할 때의 설정](remote-access-remote-setup-filter.md#remote-access-remote-setup-filter-set-up-iam-credentials)이 필요합니다. 이 설정이 없을 경우 사용자가 ID 필터링을 옵트인하면 스페이스가 표시되지 않습니다.

위 항목이 설정되면 AWS 도구 키트는 인증된 IAM 사용자 이름 또는 수임된 역할 세션 이름으로 시작하는 사용자 프로필에 속하는 공백과 일치합니다.

자동 필터링은 다음과 같은 사용자에게 옵트인됩니다.
+ 원격 IDE 설정 열기
+ **AWS Toolkit** 확장으로 이동하는 사용자
+ **ID 필터링 활성화**를 찾는 사용자
+  AWS ID를 기반으로 스페이스 자동 필터링을 활성화하는 사용자