使用运行时系统角色运行 EMR Studio Workspace - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用运行时系统角色运行 EMR Studio Workspace

注意

此页描述的运行时系统角色功能仅适用于在 Amazon EC2 上运行的 Amazon EMR,并非指 EMR Serverless 交互式应用程序中的运行时系统角色功能。要详细了解如何在 EMR Serverless 中使用运行时系统角色,请参阅《Amazon EMR Serverless 用户指南》中的 Job runtime roles

运行时角色是一个 Amazon Identity and Access Management(IAM)角色,您可以在向 Amazon EMR 集群提交作业或查询时指定该角色。您提交给 EMR 集群的任务或查询使用运行时系统角色访问 Amazon 资源,例如 Amazon S3 中的对象。

在将 EMR Studio Workspace 附加到使用 Amazon EMR 6.11 或更高版本的 EMR 集群时,您可以为提交的任务或查询选择运行时系统角色,供其在访问 Amazon 资源时使用。但是,如果 EMR 集群不支持运行时系统角色,则 EMR 集群在访问 Amazon 资源时不会代入该角色。

在将运行时系统角色用于 Amazon EMR Studio Workspace 之前,管理员必须配置用户权限,以便 Studio 用户对运行时系统角色调用 elasticmapreduce:GetClusterSessionCredentials API。然后,启动一个具有运行时系统角色的新集群,您可以将其与 Amazon EMR Studio Workspace 配合使用。

为运行时系统角色配置用户权限

配置用户权限,以便 Studio 用户可以针对自己要使用的运行时系统角色调用 elasticmapreduce:GetClusterSessionCredentials API。您还必须先配置 为 Amazon EC2 或 Amazon EKS 配置 EMR Studio 用户权限,用户才能开始使用 Studio。

警告

要授予此权限,请在向调用者授予调用 GetClusterSessionCredentials API 的权限时,根据 elasticmapreduce:ExecutionRoleArn 上下文键创建条件。以下示例演示了如何执行此操作。

{ "Sid": "AllowSpecificExecRoleArn", "Effect": "Allow", "Action": [ "elasticmapreduce:GetClusterSessionCredentials" ], "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::111122223333:role/test-emr-demo1", "arn:aws:iam::111122223333:role/test-emr-demo2" ] } } }

以下示例演示如何允许 IAM 主体使用名为 test-emr-demo3 的 IAM 角色作为运行时系统角色。此外,策略持有人只能使用集群 ID j-123456789 访问 Amazon EMR 集群。

{ "Sid":"AllowSpecificExecRoleArn", "Effect":"Allow", "Action":[ "elasticmapreduce:GetClusterSessionCredentials" ], "Resource": [ "arn:aws:elasticmapreduce:<region>:111122223333:cluster/j-123456789" ], "Condition":{ "StringEquals":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::111122223333:role/test-emr-demo3" ] } } }

以下示例允许 IAM 主体使用名称以字符串 test-emr-demo4 开头的任何 IAM 角色作为运行时系统角色。此外,策略持有人只能使用键值对 tagKey: tagValue 访问 Amazon EMR 集群。

{ "Sid":"AllowSpecificExecRoleArn", "Effect":"Allow", "Action":[ "elasticmapreduce:GetClusterSessionCredentials" ], "Resource": "*", "Condition":{ "StringEquals":{ "elasticmapreduce:ResourceTag/tagKey": "tagValue" }, "StringLike":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::111122223333:role/test-emr-demo4*" ] } } }

使用运行时系统角色启动新集群

现在有了所需权限,启动一个具有运行时系统角色的新集群,您可以将其与 Amazon EMR Studio Workspace 配合使用。

如果已经启动具有运行时系统角色的新集群,则可跳至 在 Workspace 中使用具有运行时系统角色的 EMR 集群 小节。

  1. 首先,完成 Amazon EMR 步骤的运行时角色 小节中的先决条件。

  2. 然后,启动具有以下设置的集群,以便在 Amazon EMR Studio Workspaces 中使用运行时系统角色。有关如何启动集群的说明,请参阅 为集群指定安全配置

    • 对于发行版标签,选择 emr-6.11.0 或更高版本。

    • 选择 Spark、Livy 和 Jupyter Enterprise Gateway 作为集群应用程序。

    • 使用在上一步中创建的安全配置。

    • 您可以选择为 EMR 集群启用 Lake Formation。有关更多信息,请参阅使用 Amazon EMR 启用 Lake Formation

启动集群后,即可在 EMR Studio Workspace 中使用启用了运行时系统角色的集群

注意

ExecutionEngineConfig.Type 值为 EMR 时,StartNotebookExecution API 操作目前不支持 ExecutionRoleArn 值。

在 Workspace 中使用具有运行时系统角色的 EMR 集群

设置并启动集群后,即可将启用了运行时系统角色的集群与 EMR Studio Workspace 配合使用。

  1. 创建新 Workspace 或启动现有 Workspace。有关更多信息,请参阅创建 EMR Studio Workspace

  2. 从打开的 Workspace 的左侧边栏中选择 EMR 集群选项卡,展开计算类型部分,然后从 EMR on EC2 集群菜单中选择自己的集群,从运行时系统角色菜单中选择运行时系统角色。

    EMR Studio Workspace 用户界面基于 JupyterLab 界面,左侧边栏上有以图标表示的选项卡。
  3. 选择附加将具有运行时系统角色的集群附加到 Workspace。

注意事项

在 Amazon EMR Studio Workspace 中使用支持运行时系统角色的集群时,请记住以下注意事项:

  • 只有将 EMR Studio Workspace 附加到使用 Amazon EMR 6.11 或更高版本的 EMR 集群时,您才能选择运行时系统角色。

  • 此页描述的运行时系统角色功能仅支持在 Amazon EC2 上运行的 Amazon EMR,不支持 EMR Serverless 交互式应用程序。要详细了解 EMR Serverless 的运行时系统角色,请参阅《Amazon EMR Serverless 用户指南》中的 Job runtime roles

  • 虽然在向集群提交任务时需要先配置其他权限,才能指定运行时系统角色,但无需其他权限即可访问 EMR Studio Workspace 生成的文件。此类文件的权限与没有运行时系统角色的集群生成的文件相同。

  • 您不能在具有运行时系统角色的集群的 EMR Studio Workspace 中使用 SQL Explorer。当 Workspace 连接到启用了运行时系统角色的 EMR 集群时,Amazon EMR 会在用户界面中禁用 SQL Explorer。

  • 您不能在 EMR Studio Workspace 中将协作模式与具有运行时系统角色的集群配合使用。当 Workspace 连接到启用了运行时系统角色的 EMR 集群时,Amazon EMR 会禁用 Workspace 协作功能。只有连接了 Workspace 的用户才能访问 Workspace。

  • 您可能会遇到 Spark UI 发出的 Page may not be safe! 警告,如果集群启用了运行时系统角色。如果发生这种情况,请绕过警报继续查看 Spark UI。