配置列出 Amazon EMR 集群 - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置列出 Amazon EMR 集群

管理员可以为 SageMaker Studio 执行角色配置权限,以授予用户查看他们有权访问的 Amazon EMR 集群列表的能力,从而允许他们连接到这些集群。您要访问的集群可以部署在与 Studio 相同的 AWS 账户中(选择单一账户),也可以部署在不同的账户中(选择跨账户)。以下页面介绍如何授予从 Studio 或 Studio Classic 中查看亚马逊EMR集群的权限。

重要

您只能发现并连接到从私有空间启动的 Studio Classic 应用程序的 Amazon EMR 集群。 JupyterLab 确保 Amazon EMR 集群与您的 Studio 环境位于同一 AWS 区域。

要让数据科学家发现并EMRclusters从 Studio 或 Studio Classic 连接到亚马逊,请按照以下步骤操作。

如果您的 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选项卡中,添加允许亚马逊EMR访问和操作的亚马逊EMR权限。有关政策文档的详情,请参阅中的列出 Amazon EMR 政策参考策略。用实际值替换 regionaccountID,然后将语句列表复制到角色的内联策略中。

    6. 选择下一步,然后提供一个策略名称

    7. 选择创建策略

注意

使用基于角色的访问控制 (RBAC) 连接到 Amazon EMR 集群的用户也应参阅。当您的 Amazon EMR 集群和 Studio 位于同一个账户中时配置运行时角色身份验证

在开始之前,请检索您的私有空间使用的 SageMaker AI 执行角色。ARN

有关 SageMaker AI 中的空间和执行角色的信息,请参阅了解域空间权限和执行角色

有关如何检索 SageMaker AI ARN 的执行角色的更多信息,请参阅获取执行角色

如果您的 Amazon EMR 集群和 Studio 或 Studio Classic 部署在不同的 AWS 账户中,则需要为两个账户配置权限。

注意

使用基于角色的访问控制 (RBAC) 连接到 Amazon EMR 集群的用户也应参阅。当集群和 Studio 位于不同的账户中时,配置运行时系统角色身份验证

在 Amazon EMR 集群账户上

请按照以下步骤为部署亚马逊EMR的账户(也称为信任账户)创建必要的角色和策略:

  1. 步骤 1:检索您ARN的 Amazon EMR 集群的服务角色

    要了解如何查找集群ARN的服务角色,请参阅为 Amazon 配置IAM服务角色对 AWS 服务和资源的EMR权限

  2. 步骤 2:使用以下配置创建名为AssumableRole的自定义IAM角色:

    • 权限:向授予必要的权限AssumableRole以允许访问 Amazon EMR 资源。在涉及跨账户访问的情况下,该角色也称为访问角色

    • 信任关系:为 AssumableRole 配置信任策略,以允许从需要访问的 Studio 账户承担执行角色(跨账户图中的 SageMakerExecutionRole)。

    通过担任该角色,Studio 或 Studio Classic 可以获得其在亚马逊中所需的权限的临时访问权限EMR。

    有关如何在您的Amazon EMR AWS 账户AssumableRole中创建新账户的详细说明,请按照以下步骤操作:

    1. 导航至 IAM 控制台

    2. 在左侧导航窗格中,选择策略,然后选择创建策略

    3. JSON选项卡中,添加允许亚马逊EMR访问和操作的亚马逊EMR权限。有关政策文档的详情,请参阅中的列出 Amazon EMR 政策参考策略。用实际值替换 regionaccountID,然后将语句列表复制到角色的内联策略中。

    4. 选择下一步,然后提供一个策略名称

    5. 选择创建策略

    6. 在左侧导航窗格中,选择角色,然后选择创建角色

    7. 创建角色页面上,选择自定义信任策略作为受信任实体。

    8. 将以下JSON文档粘贴到 “自定义信任策略” 部分,然后选择 “下一步”。

      For users of Studio and JupyterLab

      studio-account替换为 Studio 帐户 ID 和AmazonSageMaker-ExecutionRole您的 JupyterLab空间使用的执行角色。

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

      studio-account 替换为 Studio Classic 帐户 ID。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account: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替换为亚马逊EMR账户编号和AssumableRole在亚马逊EMR账户中创建的假设角色的名称。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::emr-account:role/AssumableRole" ] }] }
    9. (可选)要允许列出与 Studio 同一个账户中部署的亚马逊EMR集群,请向你的 Studio 执行角色添加额外的内联策略,如中列出亚马逊EMR策略中所述参考策略

  3. 步骤 3:将您的假设角色(访问角色)与您的域名或用户个人资料相关联。 JupyterLabStudio 中的用户可以使用 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. 选择 “编辑”,ARNs然后添加您的假设角色(访问角色)。

    4. 选择提交

    Associate your assumable roles in JupyterLab using a Python script

    在使用已更新权限的 SageMaker AI 执行角色从空间启动的 JupyterLab 应用程序中,在终端中运行以下命令。将domainIDuser-profile-nameemr-accountID、和AssumableRoleEMRServiceRole对于RBAC运行时角色)替换为正确的值。此代码段更新了 SageMaker AI 域中特定用户配置文件(使用client.update_userprofile)或网域设置(使用client.update_domain)的用户配置文件设置。具体而言,它允许 JupyterLab应用程序担任在亚马逊EMR账户中运行亚马逊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

    将ARN的提供AssumableRole给你的 Studio Classic 执行角色。由 Jupyter 服务器在启动时加载。ARNStudio 使用的执行角色假设该跨账户角色来发现和连接信任账户中的 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 经典版中的亚马逊EMR集群如何通过 Studio 或 Studio Classic 笔记本电脑发现和连接亚马逊EMR集群。