配置列出 Amazon EMR 集群 - Amazon SageMaker

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

配置列出 Amazon EMR 集群

管理员可以将 Studio 配置为允许用户查看他们有权访问的 Amazon EMR 集群列表,从而允许他们连接到这些集群。集群可以部署在与 Studio 相同的 AWS 账户中(选择单一账户选项卡),也可以部署在不同的账户中(选择跨账户选项卡)。

注意

Studio 目前不支持访问在与部署 Studio 的 AWS 账户不同的账户中创建的 Amazon EMR 集群。跨账户访问仅在 Studio Classic 中可用。

Single account

如果您的 Amazon EMR 集群和 Studio 或 Studio Classic 部署在同一个 AWS 账户中,请向访问您的集群的 SageMaker 执行角色授予以下权限。

注意

你应该考虑什么执行角色?

Studio UI 根据与启动它的用户配置文件关联的执行角色来确定其权限。用户界面会在启动时设置这些权限。但是,启动的空间 JupyterLab 或 Studio Classic 应用程序可以拥有单独的权限。

为了跨应用程序(例如 Studio 用户界面和 Studio Classic)一致地访问 Amazon EMR 模板和集群,请在域、用户配置文件或空间级别向所有角色授予相同的权限子集。 JupyterLab这些权限应允许发现和配置 Amazon EMR 集群。

  1. 查找您的域名、用户个人资料或空间的执行角色。有关如何检索执行角色的信息,请参阅获取你的执行角色

  2. 使用 https://console.aws.amazon.com/sagemaker/ 打开 IAM 控制台。

  3. 选择 “角色”,然后在 “搜索” 字段中键入角色名称来搜索您创建的角色。

  4. 点击链接进入您的职位。

  5. 选择添加权限,然后选择创建内联策略

  6. JSON 选项卡中,添加以下 JSON 策略及其权限:

    • AllowSagemakerProjectManagement允许创建。在 Studio 或 Studio Classic 中 AWS Service Catalog ,通过授予访问权限

    • AllowClusterDetailsDiscoveryAllowClusterDiscovery 允许发现并连接到 Amazon EMR 集群。

    • AllowPresignedUrl 允许创建用于访问 Spark UI 的预签名网址。

    所提供的 JSON 中定义的 IAM 策略授予这些权限。在将对账单列表复制到角色的内联政策之前,请将工作室区域和工作室 AWS 账户替换为实际区域和账户 ID 值。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPresignedUrl", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:GetOnClusterAppUIPresignedURL" ], "Resource": [ "arn:aws:elasticmapreduce:studio-region:studio-account:cluster/*" ] }, { "Sid": "AllowClusterDetailsDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:DescribeSecurityConfiguration" ], "Resource": [ "arn:aws:elasticmapreduce:studio-region:studio-account:cluster/*" ] }, { "Sid": "AllowClusterDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:ListClusters" ], "Resource": "*" }, { "Sid": "AllowSagemakerProjectManagement", "Effect": "Allow", "Action": [ "sagemaker:CreateProject", "sagemaker:DeleteProject" ], "Resource": "arn:aws:sagemaker:studio-region:studio-account:project/*" } ] }
  7. 命名您的策略并选择创建策略

Cross account

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

在亚马逊 EMR 账户上

在部署 Amazon EMR 的账户(也称为信任账户)上,使用以下配置创建名为ASSUMABLE-ROLE的自定义 IAM 角色:

  • 权限:向授予必要的权限ASSUMABLE-ROLE以允许访问 Amazon EMR 资源。

  • 信任关系:配置的信任策略ASSUMABLE-ROLE以允许从需要访问权限的 Studio 帐户担任角色。

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

  • 为该角色创建新策略。

    1. 使用 https://console.aws.amazon.com/sagemaker/ 打开 IAM 控制台。

    2. 在左侧菜单中,选择策略,然后选择创建策略

    3. JSON 选项卡中,添加以下 JSON 策略及其权限:

      • AllowClusterDetailsDiscoveryAllowClusterDiscovery,以允许发现并连接到 Amazon EMR 集群。

      • AllowPresignedUrl,以允许创建用于访问 Spark UI 的预签名 URL。

      将 JSON 复制到您的政策之前,请将 emr- region 和 emr-account 替换为您的实际区域和 AWS 账户 ID 值。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPresignedUrl", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:GetOnClusterAppUIPresignedURL" ], "Resource": [ "arn:aws:elasticmapreduce:emr-region:emr-account:cluster/*" ] }, { "Sid": "AllowClusterDetailsDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:DescribeSecurityConfiguration" ], "Resource": [ "arn:aws:elasticmapreduce:emr-region:emr-account:cluster/*" ] }, { "Sid": "AllowClusterDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:ListClusters" ], "Resource": "*" } ] }
    4. 命名您的策略并选择创建策略

  • 创建名为的自定义 IAM 角色ASSUMABLE-ROLE,然后将您的新策略附加到该角色。

    1. 在 IAM 控制台中,选择左侧菜单中的角色,然后选择创建角色

    2. 对于 “可信实体类型”,选择 “AWS 帐户”,然后选择 “下一步”。

    3. 选择您刚刚创建的权限,然后选择 “下一步”。

    4. 命名您的角色,ASSUMABLE-ROLE然后选择 “步骤 1:选择可信实体” 右侧的 “编辑” 按钮。

    5. 对于 “可信实体类型”,选择 “自定义信任策略”,然后粘贴以下信任关系。这会向部署 Studio 的账户(可信账户)授予担任此角色的权限。

      工作室账户替换为其实际 AWS 账户 ID。选择下一步

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:root" }, "Action": "sts:AssumeRole" } ] }
    6. 再次找到并选择您刚刚创建的权限,然后选择 “下一步”。

    7. 您的信任策略应使用您粘贴的最新 JSON 进行更新。选择 创建角色

在 Studio 账号上

在部署 Studio 或 Studio Classic 的账户(也称为可信账户)上,使用以下内联策略更新访问集群的 SageMaker 执行角色。

该政策应允许跨账户扮演角色以发现其他账户中的资源。

注意

你应该考虑什么执行角色?

Studio UI 根据与启动它的用户配置文件关联的执行角色来确定其权限。用户界面会在启动时设置这些权限。但是,启动的空间 JupyterLab 或 Studio Classic 应用程序可以拥有单独的权限。

为了跨应用程序(例如 Studio 用户界面和 Studio Classic)一致地访问 Amazon EMR 模板和集群,请在域、用户配置文件或空间级别向所有角色授予相同的权限子集。 JupyterLab这些权限应允许发现和配置 Amazon EMR 集群。

  1. 查找您的域名、用户个人资料或空间的执行角色。有关如何检索执行角色的信息,请参阅获取你的执行角色

  2. 使用 https://console.aws.amazon.com/sagemaker/ 打开 IAM 控制台。

  3. 选择 “角色”,然后在 “搜索” 字段中键入角色名称来搜索您创建的角色。

  4. 点击链接进入您的职位。

  5. 在您的执行角色详细信息页面上,选择添加权限,然后选择创建内联策略

  6. JSON 选项卡中,添加以下 JSON 策略。将 JSON 复制到您的政策之前,请将 emr - account 替换为您实际的亚马逊 EMR 账户 ID 值。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::emr-account:role/ASSUMABLE-ROLE" ] }] }
  7. 选择 “下一步”,然后提供策略名称

  8. 选择 创建策略

  9. 要允许列出与 Studio 同一个账户中部署的 Amazon EMR 集群,请向你的 Studio 执行角色添加额外的内联策略,如的 “单一账户” 选项卡中所定义。配置列出 Amazon EMR 集群

在 Jupyter 服务器启动时传递角色的 ARN

最后,请参阅,了解跨账户访问的其他配置如何向您的 Studio 执行角色ASSUMABLE-ROLE提供的 ARN。ARN 在启动时由 Jupyter 服务器加载。Studio 使用的执行角色使用该跨账户角色来发现信任账户中的 Amazon EMR 集群。

访问了解列出 Studio 或 Studio Classic 中的亚马逊 EMR 集群如何通过 Studio 或 Studio Classic 笔记本电脑发现并连接到 Amazon EMR 集群。