設定列出 Amazon EMR 叢集 - Amazon SageMaker AI

設定列出 Amazon EMR 叢集

管理員可以設定 SageMaker Studio 執行角色的許可,以授予使用者檢視其可存取之 Amazon EMR 叢集清單的能力,讓他們能夠連線到這些叢集。您想要存取的叢集可以部署在與 Studio 相同的 AWS 帳戶 (選擇單一帳戶),也可部署在個別帳戶 (選擇跨帳戶)。下頁描述如何授予從 Studio 或 Studio Classic 檢視 Amazon EMR 叢集的許可。

重要

您只能探索並連線至從私有空間啟動的 JupyterLab 和 Studio Classic 應用程式的 Amazon EMR 叢集。確保 Amazon EMR 叢集與您的 Studio 環境位於相同的 AWS 區域。

若要讓資料科學家從 Studio 或 Studio Classic 探索 Amazon EMR 叢集,然後連線至其中,請遵循下列步驟。

如果您的 Amazon EMR 叢集和 Studio 或 Studio Classic 部署在同一個 AWS 帳戶中,請將下列許可附加至存取您叢集的 SageMaker AI 執行角色。

  1. 步驟 1:擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

    如需 SageMaker AI 中空間和執行角色的相關資訊,請參閱 了解網域空間許可和執行角色

    如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊,請參閱 取得您的執行角色

  2. 步驟 2:將下列許可附加至存取 Amazon EMR 叢集的 SageMaker AI 執行角色。

    1. 導覽至 IAM 主控台

    2. 選擇角色,然後在搜尋欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分,在最後一個正斜線 (/) 之後。

    3. 遵循角色的連結。

    4. 選擇新增許可,然後選擇建立內嵌政策

    5. JSON 索引標籤中,新增允許 Amazon EMR 存取和操作的 Amazon EMR 許可。如需政策文件的詳細資訊,請參閱 參考政策 中的列出 Amazon EMR 政策。將陳述式清單複製到角色的內嵌政策之前,請將 regionaccountID 取代為其實際值。

    6. 選擇下一步,然後提供政策名稱

    7. 選擇建立政策

注意

連線至 Amazon EMR 叢集的角色型存取控制 (RBAC) 使用者也應該參閱 當您的 Amazon EMR 叢集和 Studio 位於相同帳戶時,設定執行期的角色身分驗證

開始使用之前,請先擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

如需 SageMaker AI 中空間和執行角色的相關資訊,請參閱 了解網域空間許可和執行角色

如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊,請參閱 取得您的執行角色

如果您的 Amazon EMR 叢集和 Studio 部署在不同的 AWS 帳戶中,您可以在這兩個帳戶上設定許可。

注意

連線至 Amazon EMR 叢集的角色型存取控制 (RBAC) 使用者也應該參閱 當叢集和 Studio 位於不同帳戶時,設定執行期角色驗證

在 Amazon EMR 叢集帳戶上

請遵循下列步驟,在部署 Amazon EMR 的帳戶 (也稱為信任帳戶) 上建立必要的角色和政策:

  1. 步驟 1:擷取 Amazon EMR 叢集服務角色的 ARN。

    若要了解如何尋找叢集服務角色的 ARN,請參閱設定 IAM 服務角色以取得 Amazon EMR 對 AWS 服務和資源的許可

  2. 步驟 2:使用下列組態建立名為 AssumableRole 的自訂 IAM 角色:

    • 許可:將必要的許可授與 AssumableRole,以允許存取 Amazon EMR 資源。在涉及跨帳戶存取的案例中,此角色也稱為存取角色

    • 信任關係:設定 AssumableRole 的信任政策,以允許從需要存取的 Studio 帳戶中擔任執行角色 (跨帳戶圖表中的 SageMakerExecutionRole)。

    透過擔任該角色,Studio 或 Studio Classic 可以暫時存取其在 Amazon EMR 中所需的許可。

    如需如何在 Amazon EMR AWS 帳戶中建立新 AssumableRole 的詳細指示,請遵循下列步驟:

    1. 導覽至 IAM 主控台

    2. 在左側導覽窗格中,選擇政策,然後選擇建立政策

    3. JSON 索引標籤中,新增允許 Amazon EMR 存取和操作的 Amazon EMR 許可。如需政策文件的詳細資訊,請參閱 參考政策 中的列出 Amazon EMR 政策。將陳述式清單複製到角色的內嵌政策之前,請將 regionaccountID 取代為其實際值。

    4. 選擇下一步,然後提供政策名稱

    5. 選擇建立政策

    6. 在左側導覽窗格中,選擇角色,然後選擇建立角色

    7. 建立角色頁面上,選擇自訂信任政策作為信任的實體。

    8. 自訂信任政策區段中貼入下列 JSON 文件,然後選擇下一步

      For users of Studio and JupyterLab

      studio-account 取代為 Studio 帳戶 ID,並將 AmazonSageMaker-ExecutionRole 取代為 JupyterLab 空間使用的執行角色。

      JSON
      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole" }, "Action": "sts:AssumeRole" } ] }
      For users of Studio Classic

      studio-account 取代為 Studio Classic 帳戶 ID。

      JSON
      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "sts:AssumeRole" } ] }
    9. 新增許可頁面中,新增您剛建立的許可,然後選擇下一步

    10. 檢閱頁面上,輸入角色名稱 (例如 AssumableRole) 和選用描述。

    11. 檢閱角色詳細資訊,並選擇 Create role (建立角色)

    如需在 AWS 帳戶建立角色的詳細資訊,請參閱建立 IAM 角色 (主控台)

在 Studio 帳戶上

在部署 Studio 的帳戶 (也稱為信任帳戶) 上,請使用存取信任帳戶中資源所需的許可,更新存取您叢集的 SageMaker AI 執行角色。

  1. 步驟 1:擷取私有空間所使用的 SageMaker AI 執行角色 ARN。

    如需 SageMaker AI 中空間和執行角色的相關資訊,請參閱 了解網域空間許可和執行角色

    如需如何擷取 SageMaker AI 執行角色 ARN 的詳細資訊,請參閱 取得您的執行角色

  2. 步驟 2:將下列許可附加至存取 Amazon EMR 叢集的 SageMaker AI 執行角色。

    1. 導覽至 IAM 主控台

    2. 選擇角色,然後在搜尋欄位中依名稱搜尋您的執行角色。角色名稱是 ARN 的最後一部分,在最後一個正斜線 (/) 之後。

    3. 遵循角色的連結。

    4. 選擇新增許可,然後選擇建立內嵌政策

    5. JSON 索引標籤中,新增內嵌政策,授與角色更新網域、使用者設定檔和空間的許可。如需政策文件的詳細資訊,請參閱 參考政策 中的網域、使用者設定檔和空間更新動作政策。將陳述式清單複製到您角色的內嵌政策之前,請將 regionaccountID 取代為其實際值。

    6. 選擇下一步,然後提供政策名稱

    7. 選擇建立政策

    8. 重複建立內嵌政策步驟,以新增另一個政策,授與執行角色擔任 AssumableRole 的許可,然後執行角色存取政策所允許的動作。將 emr-account 取代為 Amazon EMR 帳戶 ID,並將 AssumableRole 取代為 Amazon EMR 帳戶中建立的可擔任角色名稱。

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::111122223333:role/AssumableRole" ] } ] }
    9. (選用) 若要允許列出在與 Studio 相同的帳戶中部署的 Amazon EMR 叢集,請將額外的內嵌政策新增至 Studio 執行角色,如 參考政策 中的列出 Amazon EMR 政策所定義。

  3. 步驟 3:將您的可擔任角色 (存取角色) 與您的網域或使用者設定檔建立關聯。Studio 中的 JupyterLab 使用者可以使用 SageMaker AI 主控台或提供的指令碼。

    選擇對應至使用案例的索引標籤。

    Associate your assumable roles in JupyterLab using the SageMaker AI console

    若要使用 SageMaker AI 主控台,將您的可擔任角色與使用者設定檔或網域建立關聯:

    1. 導覽至 SageMaker AI 主控台,網址為 https://console.aws.amazon.com/sagemaker/

    2. 在左側導覽窗格中,選擇網域,然後使用您更新其許可的 SageMaker AI 執行角色選取網域。

      • 若要在網域詳細資訊頁面的應用程式組態索引標籤中,將您的可擔任角色 (存取角色) 新增至您的網域,請導覽至 JupyterLab 區段。

      • 若要將您的可擔任角色 (存取角色) 新增至您的使用者設定檔:在網域詳細資訊頁面上,選擇使用者設定檔索引標籤,然後使用您已更新其許可的 SageMaker AI 執行角色選取使用者設定檔。在應用程式組態索引標籤中,導覽至 JupyterLab 區段。

    3. 選擇編輯並新增您的可擔任角色 (存取角色) ARN。

    4. 選擇提交

    Associate your assumable roles in JupyterLab using a Python script

    在使用您已更新其許可的 SageMaker AI 執行角色,從空間啟動的 JupyterLab 應用程式中,請在終端機中執行下列命令。將 domainIDuser-profile-nameemr-accountIDAssumableRole (EMRServiceRole 表示 RBAC 執行時期角色) 取代為其適當的值。此程式碼片段會更新 SageMaker AI 網域內特定使用者設定檔 (使用 client.update_userprofile) 或網域設定 (使用 client.update_domain) 的使用者設定檔設定。具體而言,它允許 JupyterLab 應用程式擔任 Amazon EMR 帳戶內執行 Amazon EMR 叢集的特定 IAM 角色 (AssumableRole)。

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", "arn:aws:iam::emr-accountID:role/AnotherServiceRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))
    For users of Studio Classic

    AssumableRole 的 ARN 提供給 Studio Classic 執行角色。ARN 會在啟動時由 Jupyter 伺服器載入。Studio 使用的執行角色擔任該跨帳戶角色,以探索並連線至信任帳戶中的 Amazon EMR 叢集。

    您可以使用生命週期組態 (LCC) 指令碼來指定此資訊。您可以將 LCC 附加至您的網域或特定使用者設定檔。您使用的 LCC 指令碼必須是 JupyterServer 組態。如需如何建立 LCC 指令碼的詳細資訊,請參閱搭配 Studio Classic 使用生命週期組態

    下列為範例 LCC 指令碼。若要修改指令碼,請將 AssumableRoleemr-account 取代為其各自的值。跨帳戶的數量限制為五個。

    # This script creates the file that informs Studio Classic that the role "arn:aws:iam::emr-account:role/AssumableRole" in remote account "emr-account" must be assumed to list and describe Amazon EMR clusters in the remote account. #!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE" FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat > "$FILE" <<- "EOF" { emr-cross-account1: "arn:aws:iam::emr-cross-account1:role/AssumableRole", emr-cross-account2: "arn:aws:iam::emr-cross-account2:role/AssumableRole" } EOF

    執行 LCC 並寫入檔案之後,伺服器會讀取檔案 /home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json 並儲存跨帳戶 ARN。

請參閱從 Studio 或 Studio Classic 列出 Amazon EMR 叢集,以了解如何從 Studio 或 Studio Classic 筆記本探索並連線至 Amazon EMR 叢集。