Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为 IAM 服务角色配置对 AWS 服务和资源的 Amazon EMR 权限

Amazon EMR 和应用程序(如 Hadoop 和 Spark)在运行时需要访问其他 AWS 资源和执行操作的权限。Amazon EMR 中的每个集群都必须有一个服务角色 和一个适用于 Amazon EC2 实例配置文件的角色。挂载到这些角色的 IAM 策略为集群提供了代表用户与其他 AWS 服务进行互操作的权限。

如果您的集群在 Amazon EMR 中使用了自动扩展,则需要一个额外的角色(Auto Scaling 角色)。如果您使用 EMR 笔记本,则需要 EMR 笔记本 的 AWS 服务角色。有关更多信息,请参阅 IAM 用户指南中的 IAM 角色使用实例配置文件

Amazon EMR 为确定权限的每个角色提供默认角色和默认托管策略。托管策略由 AWS 创建和维护,因此如果服务要求发生变化,这些策略将自动更新。

如果您是首次在账户中创建集群或笔记本,那么适用于 Amazon EMR 的角色尚不存在。创建它们后,您可以查看角色、挂载到角色的策略以及被 IAM 控制台 (https://console.amazonaws.cn/iam/) 中的策略允许或拒绝的权限。您可以指定要创建和使用的 Amazon EMR 的默认角色,也可以创建自己的角色并在创建集群时分别指定它们以自定义权限,还可以指定在使用 AWS CLI 创建集群时要使用的默认角色。有关更多信息,请参阅 自定义 IAM 角色

修改基于身份的策略以获取传递 Amazon EMR 服务角色的权限

集群用户需要应用程序的权限才能代表其传递 Amazon EMR 的服务角色。AmazonElasticMapReduceFullAccess 权限策略,它是一个向用户授予对 Amazon EMR 的完全权限的默认托管策略,其中包含一个允许所有资源的 iam:PassRole 权限的语句。此语句允许用户将任何角色传递给其他 AWS 服务,以便 Amazon EMR 可以代表该用户与这些服务进行交互。

要实施更严格的策略,请将内联策略附加到仅对特定于 Amazon EMR 的角色允许 iam:PassRole 的适当用户或组。以下示例演示了一个仅对默认 Amazon EMR 角色(EMR_DefaultRoleEMR_EC2_DefaultRoleEMR_AutoScalingDefaultRole)允许 iam:PassRole 权限的语句。如果您使用自定义角色,请用自定义角色名称替换默认角色名称。

{ "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/EMR_DefaultRole", "arn:aws:iam::*:role/EMR_EC2_DefaultRole", "arn:aws:iam::*:role/EMR_AutoScaling_DefaultRole", "arn:aws:iam::*:role/EMR_Notebooks_DefaultRole ] }

服务角色摘要

下表列出了与 Amazon EMR 关联的 IAM 服务角色,以供快速参考。

函数 默认角色 说明 默认托管策略

Amazon EMR 的服务角色(EMR 角色)

EMR_DefaultRole

允许 Amazon EMR 在配置资源和执行服务级别操作时代表您调用其他 AWS 服务。所有集群都需要该角色。

AmazonElasticMapReduceRole

重要

请求 Spot 实例需要服务相关角色。如果此角色不存在,EMR 角色必须拥有创建它的权限,否则会出现权限错误。托管策略包含一个允许此操作的语句。如果您自定义此角色或策略,请确保包含一个允许创建此服务相关角色的语句。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon EMR 的服务角色(EMR 角色)Spot 实例请求的服务相关角色

集群 EC2 实例的服务角色(EC2 实例配置文件)

EMR_EC2_DefaultRole

集群实例上运行在 Hadoop 生态系统之上的应用程序进程在调用其他 AWS 服务时将使用该角色。要使用 EMRFS 访问 Amazon S3 中的数据,您可以根据发出请求的用户或组或根据数据在 Amazon S3 中的位置指定代入不同的角色。有关更多信息,请参阅为处理 EMRFS 对 Amazon S3 的请求配置 IAM 角色。所有集群都需要该角色。

AmazonElasticMapReduceforEC2Role。有关更多信息,请参阅 集群 EC2 实例的服务角色(EC2 实例配置文件)

EMR 中的自动扩展服务角色(Auto Scaling 角色)

EMR_AutoScaling_DefaultRole

允许用于动态扩展环境的其他操作。只有在 Amazon EMR 中使用自动扩展的集群才需要。有关更多信息,请参阅使用 Amazon EMR 中的自动扩展功能

AmazonElasticMapReduceforAutoScalingRole.有关更多信息,请参阅 EMR 中的自动扩展服务角色(Auto Scaling 角色)

EMR 笔记本 的服务角色

EMR_Notebooks_DefaultRole

提供 EMR 笔记本访问其他 AWS 资源和执行操作所需的权限。仅在使用 EMR 笔记本 时需要。

AmazonElasticMapReduceEditorsRole。有关更多信息,请参阅EMR 笔记本 的服务角色

默认情况下也附加 S3FullAccessPolicy。下面显示了此策略的内容。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "*" } ] }

服务相关角色

AWSServiceRoleForEMRCleanup

Amazon EMR 自动创建服务相关角色。如果 Amazon EMR 的服务失去了清除 Amazon EC2 资源的能力,Amazon EMR 可以使用此角色来进行清除操作。如果集群使用 Spot 实例,则附加到 Amazon EMR 的服务角色(EMR 角色)的权限策略必须允许创建服务相关角色。有关更多信息,请参阅 Amazon EMR 的服务相关角色权限

AmazonEMRCleanupPolicy