기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
PAM 인증 사용
Amazon EMR에 설치된 JupyterHub에 PAM 사용자를 생성하는 방법은 두 단계의 프로세스로 이루어집니다. 첫 번째 단계는 마스터 노드의 jupyterhub
컨테이너에서 실행 중인 운영 체제에 사용자를 추가하는 것과 해당 사용자를 각 사용자의 홈 디렉터리에 추가하는 것입니다. 두 번째 단계는 이러한 운영 체제 사용자를 JupyterHub 사용자로 추가하는 것입니다. JupyterHub에서는 이 프로세스를 화이트리스팅이라고 합니다. 추가된 JupyterHub 사용자는 JupyterHub URL에 연결한 다음, 액세스를 위하 자신의 운영 체제 자격 증명을 제공하면 됩니다.
사용자가 로그인하면 JupyterHub는 해당 사용자용 노트북 서버 인스턴스를 엽니다. 이 인스턴스는 마스터 노드에 있는 사용자의 홈 디렉터리에 저장됩니다(/var/lib/jupyter/home/
). 노트북 서버 인스턴스가 없는 경우, JupyterHub에서 사용자의 홈 디렉터리에 노트북 인스턴스를 만듭니다. 다음 단원에서는 여러 사용자를 추가하는 기초적인 bash 스크립트를 따라 운영 체제 및 JupyterHub에 사용자를 개별적으로 추가하는 방법을 보여줍니다.username
컨테이너에 운영 체제 사용자 추가
다음 예제에서는 먼저 컨테이너 내에서 useradd
sudo docker exec jupyterhub useradd -m -s /bin/bash -N diego sudo docker exec jupyterhub bash -c "echo diego:diego | chpasswd"
JupyterHub 사용자 추가
JupyterHub의 Admin 패널이나 REST API를 사용하면 사용자 및 관리자를 추가하거나 사용자만 추가할 수 있습니다.
JupyterHub의 Admin 패널을 사용하면 사용자 및 관리자를 추가하는 방법
SSH를 사용하여 마스터 노드에 연결하고 관리자 권한이 있는 ID를 사용하여 https://
MasterNodeDNS
:9443에 로그인합니다.제어판, Admin을 선택합니다.
사용자, 사용자 추가를 선택하거나 Admin, Add Admins(Admin 추가)를 선택합니다.
REST API를 사용하여 사용자를 추가하려면
SSH를 사용하여 마스터 노드에 연결하고 마스터 노드에서 다음 명령을 사용하거나 하나의 단계로 명령을 실행합니다.
API 요청을 만들 관리자 토큰을 획득하고 다음 단계의
AdminToken
을 해당 토큰으로 바꿉니다.다음 명령을 사용하되,
UserName
을 컨테이너 내에서 생성된 운영 체제 사용자로 바꿉니다.curl -XPOST -H "Authorization: token
AdminToken
" "https://$(hostname):9443/hub/api/users/UserName
참고
JupyterHub 웹 인터페이스에 처음 로그인하면 자동으로 관리자가 아닌 JupyterHub 사용자로 추가됩니다.
예제: 여러 사용자를 추가하는 Bash 스크립트
다음 샘플 bash 스크립트는 이 단원의 앞의 단계와 함께 연결되어 여러 JupyterHub 사용자를 생성합니다. 이 스크립트는 프라이머리 노드에서 직접 실행할 수도 있고, Amazon S3에 업로드한 다음 하나의 단계로 실행할 수도 있습니다.
이 스크립트는 먼저 사용자 이름 배열을 설정한 다음, jupyterhub token
명령을 사용하여 기본 관리자인 jovyan용 API 토큰을 생성합니다. 그런 다음 해당 사용자용 jupyterhub
컨테이너에 운영 체제 사용자를 생성합니다. 이때 최초 암호는 각 사용자 이름과 동일하게 지정됩니다. 마지막으로, REST API 작업을 호출하여 JupyterHub에 각 사용자를 생성합니다. 또한 스크립트의 앞부분에서 생성한 토큰을 전달하고 REST 응답을 jq
에 보내 보다 쉽게 볼 수 있도록 해줍니다.
# Bulk add users to container and JupyterHub with temp password of username set -x USERS=(shirley diego ana richard li john mary anaya) TOKEN=$(sudo docker exec jupyterhub /opt/conda/bin/jupyterhub token jovyan | tail -1) for i in "${USERS[@]}"; do sudo docker exec jupyterhub useradd -m -s /bin/bash -N $i sudo docker exec jupyterhub bash -c "echo $i:$i | chpasswd" curl -XPOST --silent -k https://$(hostname):9443/hub/api/users/$i \ -H "Authorization: token $TOKEN" | jq done
이 스크립트를 Amazon S3의 위치(예: s3://amzn-s3-demo-bucket/createjupyterusers.sh
)에 저장합니다. 그런 다음 script-runner.jar
을 사용하여 이를 하나의 단계로 실행하면 됩니다.
예제: 클러스터 생성 시 스크립트 실행(AWS CLI)
참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
aws emr create-cluster --name="
MyJupyterHubCluster
" --release-label emr-5.36.2 \ --applications Name=JupyterHub --log-uris3://amzn-s3-demo-bucket/MyJupyterClusterLogs
\ --use-default-roles --instance-type m5.xlarge --instance-count2
--ec2-attributes KeyName=MyKeyPair
\ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://region
.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/createjupyterusers.sh"]
기존 클러스터에서 스크립트 실행(AWS CLI)
참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
aws emr add-steps --cluster-id
j-XXXXXXXX
--steps Type=CUSTOM_JAR,\ Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://region
.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/createjupyterusers.sh"]