인터넷 액세스 없이 서브넷을 사용하여 VPC에 연결 - Amazon SageMaker AI

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

인터넷 액세스 없이 서브넷을 사용하여 VPC에 연결

인터넷에 액세스할 수 없는 프라이빗 서브넷의 Studio 공간에 Visual Studio 코드를 연결하기 전에 관리자에게이 있는지 확인합니다VPC 내에서 인터넷 액세스 없이 서브넷으로 실행되도록 Studio 설정.

로컬 Visual Studio 코드를 프라이빗 서브넷의 Studio 공간에 연결하는 두 가지 옵션이 있습니다.

  • HTTP 프록시 설정

  • 사전 패키징된 VS Code 원격 서버 및 확장

제어된 허용 목록이 있는 HTTP 프록시

Studio 공간이 방화벽 또는 프록시 뒤에 있는 경우 관리자에게 VS Code 서버 및 확장 관련 CDNs 및 엔드포인트에 대한 액세스를 허용하도록 요청합니다. 자세한 내용은 제어된 허용 목록으로 HTTP 프록시 설정 단원을 참조하십시오.

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

참고

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

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

사전 패키징된 VS Code 원격 서버 및 확장

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

VS Code 원격 서버 및 확장에 대한 사전 패키징 사용 지침

  1. 로컬 시스템에 VS Code 설치

  2. SageMaker 스페이스에 연결하는 경우:

    • 기본 프로파일을 사용하여 사전 패키징된 확장과의 호환성을 보장합니다. 그렇지 않으면 Studio 스페이스에 연결한 후 다운로드한 VSIX 파일을 사용하여 확장 프로그램을 설치해야 합니다.

    • 스페이스를 시작할 때 스페이스에 연결할 VS Code 버전별 LCC 스크립트를 선택합니다.

VS Code 원격 서버 및 확장 프로그램 사전 패키징을 위한 Dockerfile 사용 예제

다음은 원격 액세스 및 인터넷이 활성화된 공간을 생성할 수 없는 경우 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

사전 패키징된 VS Code 원격 서버 /tmp/remote_access/.VS Code-server 및 확장의 단계를 아카이브하고 수행하여 확장을 연결하고 설치합니다. 압축을 푼 후 .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)

다음은 특정 버전의 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