配置列出 Amazon EMR 集群 - Amazon SageMaker

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

配置列出 Amazon EMR 集群

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

注意

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

Single account

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

注意

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

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

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

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

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

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

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

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

  6. JSON选项卡中,添加以下具有权限的JSON策略:

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

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

    • AllowPresignedUrl允许创建预签名URLs以访问 Spark 用户界面。

    提供的IAM策略中定义的策略JSON授予这些权限。Replace(替换) studio-region 以及 studio-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: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 账户中,则需要为两个账户配置权限。

在 Amazon EMR 账户上

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

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

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

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

  • 为该角色创建新策略。

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

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

    3. JSON选项卡中,添加以下具有权限的JSON策略:

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

      • AllowPresignedUrl允许创建预签名URLs以访问 Spark 用户界面。

      Replace(替换) emr-region 以及 emr-account 在复制到您的保单之前,请使用您的实际地区和 AWS 账户 ID 值。JSON

      { "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 的账户(可信账户)授予担任此角色的权限。

      Replace(替换) studio-account 附上其实际 AWS 账户 ID。选择下一步

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

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

在 Studio 账号上

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

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

注意

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

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

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

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

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

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

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

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

  6. JSON选项卡中,添加以下JSON策略。Replace(替换) emr-account 在复制JSON到您的政策之前,请使用您的实际亚马逊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时传递角色

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

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