Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo dell'autenticazione PAM
La creazione di PAM utenti JupyterHub su Amazon EMR è un processo in due fasi. La prima fase è aggiungere utenti al sistema operativo in esecuzione nel container jupyterhub
sul nodo master e aggiungere una home directory utente corrispondente per ogni utente. Il secondo passaggio consiste nell'aggiungere questi utenti del sistema operativo come JupyterHub utenti, un processo noto come whitelisting in. JupyterHub Una volta aggiunto, un JupyterHub utente può connettersi a JupyterHub URL e fornire le credenziali del sistema operativo per l'accesso.
Quando un utente accede, JupyterHub apre l'istanza del server notebook per quell'utente, che viene salvata nella home directory dell'utente sul nodo master, ovvero. /var/lib/jupyter/home/
Se non esiste un'istanza del server notebook, JupyterHub genera un'istanza di notebook nella home directory dell'utente. Le sezioni seguenti mostrano come aggiungere utenti singolarmente al sistema operativo e a JupyterHub, seguite da uno script bash rudimentale che aggiunge più utenti.username
Aggiunta di un utente del sistema operativo al container
Nell'esempio seguente viene utilizzato innanzitutto il comando useradd
sudo docker exec jupyterhub useradd -m -s /bin/bash -N diego sudo docker exec jupyterhub bash -c "echo diego:diego | chpasswd"
Aggiungere un JupyterHub utente
Puoi utilizzare il pannello di amministrazione in JupyterHub o REST API per aggiungere utenti e amministratori o solo utenti.
Per aggiungere utenti e amministratori utilizzando il pannello di amministrazione in JupyterHub
Connect al nodo master utilizzando SSH e accedendo a https://
MasterNodeDNS
:9443 con un'identità con autorizzazioni di amministratore.Scegliere Control Panel (Pannello di controllo), Admin (Amministratore).
Scegliere User (Utente), Add Users (Aggiungi utenti) o scegliere Admin (Amministratore), Add Admins (Aggiungi amministratori).
Per aggiungere un utente utilizzando il REST API
Connect al nodo master utilizzando SSH e utilizzando il seguente comando sul nodo master oppure esegui il comando come passaggio.
Acquisisci un token amministrativo per effettuare API richieste e sostituirlo
AdminToken
nel passaggio successivo con quel token.Usa il seguente comando, sostituendo
UserName
con un utente del sistema operativo che è stato creato all'interno del contenitore.curl -XPOST -H "Authorization: token
AdminToken
" "https://$(hostname):9443/hub/api/users/UserName
Nota
L'utente viene aggiunto automaticamente come utente JupyterHub non amministratore quando si accede all'interfaccia JupyterHub web per la prima volta.
Esempio: Script bash per aggiungere più utenti
Il seguente script bash di esempio collega i passaggi precedenti di questa sezione per creare più JupyterHub utenti. Lo script può essere eseguito direttamente sul nodo master o può essere caricato in Amazon S3 e, successivamente, eseguito come fase.
Lo script stabilisce innanzitutto un array di nomi utente e utilizza il jupyterhub token
comando per creare un API token per l'amministratore predefinito, jovyan. Quindi crea un utente del sistema operativo nel container jupyterhub
per ogni utente, assegnando a ciascuno una password iniziale che è uguale al relativo nome utente. Infine, richiama l'RESTAPIoperazione di creazione di ogni utente in. JupyterHub Passa il token generato in precedenza nello script e invia la REST risposta a jq
per una visualizzazione più semplice.
# 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
Salva lo script in un percorso in Amazon S3, ad esempio s3://mybucket/createjupyterusers.sh
. Quindi puoi utilizzare script-runner.jar
per eseguirlo come una fase.
Esempio: Esecuzione dello script durante la creazione di un cluster (AWS CLI)
Nota
I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).
aws emr create-cluster --name="
MyJupyterHubCluster
" --release-label emr-5.36.2 \ --applications Name=JupyterHub --log-uris3://MyBucket/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://mybucket/createjupyterusers.sh"]
Esecuzione dello script su un cluster esistente (AWS CLI)
Nota
I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuovili o sostituiscili con un accento circonflesso (^).
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://mybucket/createjupyterusers.sh"]