프라이빗 서브넷에 있는 영구 Amazon EMR JupyterHub 노트북에서 ‘엔드포인트 URL의 연결 제한 시간’ 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 12일

프라이빗 서브넷에 있는 Amazon EMR JupyterHub 클러스터에 대해 지속성을 구성했습니다. 클러스터가 Amazon Simple Storage Service(Amazon S3)에 도달하려고 하면 ‘botocore.exceptions.ConnectTimeoutError: Connect timeout on endpoint URL: https://s3.amazonaws.com/your-jupyter-backups/jupyter/jupyterhub-user-name.’과 같은 오류가 표시됩니다.

간략한 설명

노트북에 대해 지속성을 구성할 때 s3.amazonaws.com이 기본 엔드포인트입니다. 이 주소는 퍼블릭 주소이므로 프라이빗 서브넷에 있는 EMR 클러스터는 엔드포인트에 도달할 수 없습니다. 이 문제를 해결하려면 사용 중인 리전에 해당하는 Amazon S3 엔드포인트(예: https://s3-eu-west-1.amazonaws.com)를 사용하도록 Jupyter를 구성합니다.

​해결 방법

실행 중인 클러스터에서나 새 클러스터를 시작할 때 리전 및 엔드포인트를 구성할 수 있습니다.

실행 중인 클러스터에서 리전 및 엔드포인트 구성

/etc/jupyter/jupyter_notebook_config.py에 리전 및 해당 엔드포인트를 추가합니다. 다음 예제에서는 유럽(아일랜드) 리전을 사용합니다. 리전 및 해당 엔드포인트 목록은 AWS 서비스 엔드포인트를 참조하십시오.

sudo vim /etc/jupyter/jupyter_notebook_config.py

config.S3ContentsManager.endpoint_url = "https://s3-eu-west-1.amazonaws.com"
config.S3ContentsManager.region_name = "eu-west-1"

새 클러스터에서 리전 및 엔드포인트 구성

클러스터를 시작할 때 다음과 유사한 구성 객체를 추가합니다. 이스케이프 문자(‘\’)를 포함해야 합니다. 그렇지 않으면 큰따옴표가 파일로 전송되지 않고 Python 코드가 실패합니다.

[
    {
        "Classification": "jupyter-s3-conf",
        "Properties": {
            "s3.persistence.enabled": "true",
            "s3.persistence.bucket": "my-precious-bucket"
        }
    },
    {
        "Classification": "jupyter-notebook-conf",
        "Properties": {
            "config.S3ContentsManager.endpoint_url":  "\"https://s3-eu-west-1.amazonaws.com\"",
            "config.S3ContentsManager.region_name": "\"eu-west-1\""
        }
    }    
]

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?