選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 PAM 身分驗證 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 PAM 身分驗證

在 Amazon EMR 的 JupyterHub 中建立 PAM 使用者的程序有兩個步驟。第一個步驟是將使用者新增到在主節點 jupyterhub 容器中執行的作業系統,並為每個使用者新增對應的使用者主目錄。第二個步驟是將這些作業系統使用者新增為 JupyterHub 使用者 – 這項程序在 JupyterHub 中稱為列入允許清單。在新增 JupyterHub 使用者後,他們可以連接到 JupyterHub URL 並提供他們的作業系統登入資料以進行存取。

當使用者登入時,JupyterHub 會為該使用者開啟筆記本伺服器執行個體,此執行個體儲存在該使用者的主節點主目錄,即 /var/lib/jupyter/home/username。如果筆記本伺服器執行個體不存在,JupyterHub 會在使用者的主目錄中產生筆記本執行個體。以下章節將示範如何個別將使用者新增到作業系統和 JupyterHub,接著是新增多個使用者的早期 bash 指令碼。

將作業系統使用者新增至容器

下列的範例會先在容器中使用 useradd 指令,來新增一位使用者 diego,然後為該名使用者建立主目錄。第二個指令使用 chpasswd 來為此使用者建立 diego 的密碼。當使用 SSH 連接時,命令在主節點命令列上執行。您也可以使用步驟執行這些命令,如 提交步驟以進行管理 所述。

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 中的管理面板來新增使用者和管理員
  1. 使用 SSH 連線到主節點,並以具有管理者許可的身分登入 https://MasterNodeDNS:9443。

  2. 選擇 Control Panel (控制面板)Admin (管理員)

  3. 選擇 User (使用者)Add Users (新增使用者),或選擇 Admin (管理員)Add Admins (新增管理員)

使用 REST API 新增使用者
  1. 使用 SSH 連接到主節點並使用下列主節點的命令,或將該命令做為步驟執行。

  2. 取得管理字符以發出 API 請求,並將下列步驟中的 AdminToken (AdminToken) 換成該字符。

  3. 使用下列的指令,將 UserName (使用者名稱) 換成在容器中建立的作業系統使用者。

    curl -XPOST -H "Authorization: token AdminToken" "https://$(hostname):9443/hub/api/users/UserName
注意

在您首次登入 JupyterHub Web 介面時,系統會自動將您新增為 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-uri s3://amzn-s3-demo-bucket/MyJupyterClusterLogs \ --use-default-roles --instance-type m5.xlarge --instance-count 2 --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"]
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。