VPC 전용 모드의 Amazon SageMaker Studio 노트북이 KernelGateway 앱과 연결되지 않는 이유는 무엇입니까?

6분 분량
0

VPC 전용 모드의 Amazon SageMaker Studio 노트북과 KernelGateway 앱 간의 연결에 문제가 있습니다.

간략한 설명

VPC 전용 모드에서 SageMaker Studio를 사용하고 KernelGateway 앱을 실행할 수 없는 경우 다음 오류가 발생할 수 있습니다.

SageMaker Studio를 시작할 수 있지만 커널이 실패하고 다음 오류가 발생합니다.

SageMaker Studio is unable to connect KernelGateway App. In VPCOnly mode, please ensure that security groups allow TCP traffic within the security group

일반적으로 이 오류가 발생하는 이유는 보안 그룹이 SageMaker 도메인 내 인스턴스 간 연결을 허용하는 자체 참조 형태가 아니기 때문입니다.

예를 들어, SageMaker Studio를 시작할 수 있지만 로드하는 데 시간이 오래 걸리고 커널이 시작되지 않는다고 가정해 보겠습니다.

Failed to start kernel
Failed to launch app [None]. SageMaker Studio is unable to reach SageMaker endpoint. Please ensure your VPC has connectivity to SageMaker via Internet or VPC Endpoint. If you are using VPC Endpoints, please ensure Security Groups allows traffic between Studio and VPC endpoints.

이 오류는 VPC 전용 도메인이 인터넷이나 Amazon Virtual Private Cloud(VPC) 엔드포인트에 연결할 수 없을 때 발생합니다. 이는 다음과 같은 여러 가지 이유 때문일 수 있습니다.

  • 보안 그룹이 올바르게 구성되지 않았습니다.
  • 서브넷에 올바른 VPC 엔드포인트가 없습니다.
  • 도메인이 프라이빗 서브넷에 연결되어 있으며 라우팅 테이블에 활성 NAT 게이트웨이가 추가되지 않았습니다.
  • 퍼블릭 서브넷에 연결하도록 SageMaker 스튜디오를 설정했습니다.

해결 방법

SageMaker Studio의 보안 그룹에 필수 규칙이 포함되어 있는지 확인

도메인과 Amazon Elastic File System(Amazon EFS) 볼륨 간의 AWS Network File System(AWS NFS) 트래픽이 포트 2049에서 TCP를 통해 허용되는지 확인합니다. SageMaker Studio 데이터는 Amazon EFS를 사용하여 저장됩니다. 따라서 저장을 위한 인바운드 및 아웃바운드 연결을 허용하는 규칙이 있어야 합니다.

Amazon EFS에서 리소스로의 인바운드 트래픽을 허용하려면 다음을 수행합니다.

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창에서 **Security Groups(보안 그룹)**를 선택합니다.
  3. 업데이트할 보안 그룹을 선택합니다.
  4. **Actions(작업)**를 선택한 다음 **Edit inbound rules(인바운드 규칙 편집)**를 선택합니다.
  5. **Add rule(규칙 추가)**을 선택하고 다음을 수행합니다.
    **Type(유형)**에서 NFS를 선택합니다.
    **Source(소스)**에서 Custom(사용자 지정을 선택한 다음 Amazon EFS ID를 입력합니다.
  6. **Save rules(규칙 저장)**를 선택합니다.

JupyterServer와 KernelGateway 앱 간의 연결을 허용하려면 보안 그룹 내에서 TCP 트래픽을 허용해야 합니다. VPC 전용 모드로 Studio 도메인을 생성했으므로, SageMaker Studio 도메인 리소스에 대해 하나 이상의 보안 그룹을 지정해야 합니다. 이 보안 그룹은 포트 8192-65535에서 TCP를 통한 인바운드 트래픽과 0.0.0.0/0으로의 모든 아웃바운드 트래픽을 허용해야 합니다.

JupyterServer와 KernelGateway 앱 간의 연결을 허용하려면 다음을 수행합니다.

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창에서 **Security Groups(보안 그룹)**를 선택합니다.
  3. 업데이트할 보안 그룹을 선택합니다.
  4. **Actions(작업)**를 선택한 다음 **Edit inbound rules(인바운드 규칙 편집)**를 선택합니다.
  5. **규칙 추가(Add rule)**를 선택하고 다음을 수행합니다.
    **유형(Type)**에서 **사용자 지정 TCP(Custom TCP)**를 선택합니다.
    포트 범위(Port Range)에 8192-65535를 입력합니다.
    **소스(Source)**에서 **사용자 지정(Custom)**을 선택한 다음 편집 중인 보안 그룹의 보안 그룹 ID를 입력합니다.
  6. **규칙 정장(Save rules)**을 선택합니다.

SageMaker Studio 노트북에서 Amazon VPC의 리소스에 액세스하면 SageMaker 서비스 계정의 트래픽이 탄력적 네트워크 인터페이스를 통해 라우팅됩니다. JupyterServer 앱과 KernelGateway 앱은 모두 SageMaker 서비스 계정 VPC에 있다는 점에 유의하세요. 이 둘은 VPC에 연결된 탄력적 네트워크 인터페이스를 통해 서로 통신합니다. 이 두 앱은 SageMaker Studio 도메인 서비스 계정의 일부이지만, 서로 다른 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 실행됩니다. 이 두 앱은 임시 포트를 사용하여 서로 간의 연결을 설정합니다. 이 두 앱을 연결하는 데 사용되는 특정 포트는 없습니다. 따라서 자체 참조 보안 그룹에서 모든 TCP 포트를 열 수 있도록 하는 것이 좋습니다. 자세한 내용은 Amazon SageMaker Studio 노트북 아키텍처 심층 분석을 참조하세요.

필수 VPC 엔드포인트를 생성했는지 확인

SageMaker Studio 리소스에 인터넷 액세스가 필요하지 않은 경우, NAT 게이트웨이를 추가할 필요가 없습니다. 하지만 Studio 노트북을 실행하려면 다음과 같은 엔드포인트가 필요합니다.

  • SageMaker API: com.amazonaws.<aws-region>.sagemaker.api
  • SageMaker runtime: com.amazonaws.<aws-region>.sagemaker.runtime

Amazon Simple Storage Service(Amazon S3) 및 프로젝트 템플릿에 액세스하려면 다음 엔드포인트를 생성해야 합니다.

  • Amazon S3의 경우: com.amazonaws.<aws-region>.s3
  • Amazon SageMaker 프로젝트 템플릿의 경우: com.amazonaws.<aws-region>.servicecatalog

다음을 수행하여 VPC의 보안 그룹을 이러한 VPC 엔드포인트와 연결해야 합니다.

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창에서 **Endpoints(엔드포인트)**를 선택합니다.
  3. 업데이트하려는 엔드포인트를 선택합니다.
  4. **Actions(작업)**를 선택한 다음 **Manage security groups(보안 그룹 관리)**를 선택합니다.
  5. 이 엔드포인트와 연결해야 하는 보안 그룹을 선택합니다.
  6. **Save(저장)**를 선택합니다.

자세한 내용은 다음을 참조하세요.

인터넷 연결이 필요한 경우 NAT 게이트웨이 사용

SageMaker Studio 리소스에 인터넷 액세스가 필요한 경우 먼저 SageMaker Studio가 프라이빗 서브넷에 연결되도록 설정되어 있는지 확인합니다. 그런 다음 NAT 게이트웨이를 생성하고 프라이빗 서브넷의 라우팅 테이블을 통해 NAT 게이트웨이의 트래픽을 허용합니다. 자세한 내용은 Amazon VPC의 프라이빗 서브넷에 NAT 게이트웨이를 설정하려면 어떻게 해야 하나요?를 참조하세요. 참고로 퍼블릭 서브넷에 연결된 SageMaker Studio 도메인에서는 인터넷에 연결할 수 없습니다.

VPC의 네트워크 요구 사항이 충족되었는지 확인

SageMaker Studio를 VPC 전용 모드로 시작한 경우 VPC가 다음 요구 사항을 충족하는지 확인합니다.

  • 서브넷에는 인스턴스에 사용할 충분한 IP 주소가 있어야 합니다.
  • 인터넷 액세스를 허용하려면 도메인 생성 중에 SageMaker 도메인을 프라이빗 서브넷에 연결해야 합니다. 또한 인터넷 액세스에는 NAT 게이트웨이를 사용합니다.
  • SageMaker API를 실행하기 위해 VPC 엔드포인트를 사용하는 경우, VPC의 Enable DNS hostnames(DNS 호스트 이름 활성화)Enable DNS Support(DNS 지원 활성화) 속성이true로 설정되어 있는지 확인합니다. 이는 커널을 시작할 때 VPC가 SageMaker API 엔드포인트에 연결하는 데 필요합니다.

AWS Command Line Interface(AWS CLI) 명령을 사용하여 올바른 보안 그룹이 도메인에 연결되었는지 확인할 수 있습니다. 새 보안 그룹을 사용하도록 Studio 도메인의 DefaultUserSettings를 업데이트하려면 update-domain 명령을 사용합니다.

aws sagemaker update-domain –domain-id <value> --default-user-settings SecurityGroups=<list>

필요한 보안 그룹에 연결된 도메인을 다시 생성하여 도메인을 재구성할 수도 있습니다. SecurityGroups 파라미터의 출력에는 Studio가 통신에 사용하는 VPC의 모든 보안 그룹이 나열됩니다.

참고: 위의 명령을 실행하려면 사용자 프로필에서 InService 상태의 앱을 모두 삭제해야 합니다.

update-domain 명령이 성공적으로 실행되면 describe-domain 명령을 사용하여 도메인을 확인할 수 있습니다.

예:

$ aws sagemaker describe-domain --domain-id d-xyzxyz

그런 다음 SageMaker Studio를 다시 시작하고 노트북이 제대로 시작되고 있는지 확인합니다. 노트북 셀 내에서 !curl amazon.com을 실행하여 인터넷 연결을 테스트할 수도 있습니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

JupyterServer 앱을 삭제하고 새 앱을 시작하면 업데이트된 설정이 적용됩니다. Amazon VPC 설정을 업데이트하고 나면 SageMaker Studio 사용자 프로필을 사용할 수 있습니다. 자세한 내용은 VPC의 SageMaker Studio 노트북을 외부 리소스에 연결에서 VPC 전용 모드를 사용하기 위한 요구 사항 섹션을 참조하세요.

기타 고려 사항

한 명의 사용자에게만 이 문제가 발생하는 경우 VPC 업데이트가 완료되기 전에 기본 앱이 실행되었는지 확인하세요. 이 경우 기본 JupyterServer 앱이 새 VPC 구성을 활용하도록 자동으로 업데이트되지 않아 연결 문제가 발생합니다. 또한 기본 JupyterServer 앱이 몇 주 또는 몇 달 전에 실행되었는지 확인하세요. 이로 인해 앱에 큰 로그 파일과 임시 파일이 생길 수 있습니다. 기본 앱을 다시 만들어 공간을 확보하거나 앱이 업데이트된 VPC 구성을 사용하는지 확인하세요.

SageMaker Studio 사용자가 다른 실행 역할로 구성된 경우 문제가 발생할 수 있습니다. 사용자의 실행 역할 권한에 필수 정책이 포함되어 있는지 확인합니다. 이러한 정책은 Studio 노트북을 생성하는 데 필요한 DescribeApp 작업을 실행하기 위한 실행 역할을 활성화해야 합니다. 실행 역할에 대해 이 권한을 업데이트한 후 VPC 전용 모드로 Studio 노트북을 프로비저닝해 보세요.


AWS 공식
AWS 공식업데이트됨 일 년 전