为 Amazon EMR 配置 IAM 服务角色对Amazon服务和资源的权限 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

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

如果您在 Amazon EMR 中的集群使用了自动伸缩,则需要一个额外的角色,即 Auto Scaling 角色。如果您使用 EMR Notebooks,则需要 EMR Notebooks 的Amazon服务角色。

Amazon EMR 为确定权限的每个角色提供默认角色和默认托管策略。托管策略由 Amazon 创建和维护,因此如果服务要求发生变化,这些策略将自动更新。请参阅《IAM 用户指南》中的Amazon托管策略

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

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

Amazon EMR 完全权限默认托管策略(AmazonEMRFullAccessPolicy_v2)和 Amazon EMR 服务策略(AmazonEMRServicePolicy_v2)可用于替换即将弃用的策略。v2 策略包含新的 iam:PassRole 安全配置,包括以下内容:

  • iam:PassRole 权限仅适用于特定默认 Amazon EMR 角色。

  • iam:PassedToService 条件允许您仅将策略用于指定的Amazon服务,例如 elasticmapreduce.amazonaws.comec2.amazonaws.com

您可以在 IAM 控制台中查看 AmazonEMRFullAccessPolicy_v2AmazonEMRServicePolicy_v2 策略的 JSON 版本。

建议您使用 v2 托管策略创建新的集群。

服务角色摘要

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

函数 默认角色 描述 默认托管策略

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

EMR_DefaultRole

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

AmazonElasticMapReduceRole

重要

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

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

EMR_EC2_DefaultRole

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

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

EMR 中的自动伸缩服务角色(Auto Scaling 角色)

EMR_AutoScaling_DefaultRole

允许用于动态扩展环境的其他操作。只有在 Amazon EMR 中使用自动伸缩的集群才需要。有关更多信息,请参阅将自动伸缩与实例组的自定义策略结合使用

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

EMR Notebooks 的服务角色

EMR_Notebooks_DefaultRole

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

AmazonElasticMapReduceEditorsRole(有关更多信息,请参阅 EMR Notebooks 的服务角色。)

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