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

自定义 IAM 角色

您可能希望根据自己的要求自定义 IAM 角色和权限。例如,如果您的应用程序不使用 EMRFS 一致视图,您可能不想允许 Amazon EMR 访问 Amazon DynamoDB。要自定义权限,我们建议您创建新的角色和策略。从托管策略中的默认角色 (例如 AmazonElasticMapReduceforEC2RoleAmazonElasticMapReduceRole) 的权限开始着手。将相应内容复制并粘贴到新的策略语句中,根据具体情况修改权限,并将修改后的权限策略附加到您创建的角色。您必须拥有合适的 IAM 权限才能使用角色和策略。有关更多信息,请参阅允许用户和组创建和修改角色

如果您为 EC2 创建自定义 EMR 角色,请遵循基本工作流程,这将自动创建同名的实例配置文件。Amazon EC2 允许您创建名称不同的实例配置文件和角色,但 Amazon EMR 不支持此配置,并且它将在您创建群集时导致“invalid instance profile”(实例配置文件无效) 错误。

重要

当服务要求发生变化时,内联策略不会自动更新。如果您创建并附加内联策略,请注意,服务更新可能会突然导致权限错误。有关更多信息,请参阅 IAM 用户指南 中的托管策略与内联策略以及在创建集群时指定自定义 IAM 角色

有关处理 IAM 角色的更多信息,请参阅 IAM 用户指南中的以下主题:

在创建集群时指定自定义 IAM 角色

在创建集群时,您可以指定适用于 Amazon EMR 的服务角色和适用于 Amazon EC2 实例配置文件的角色。创建集群的用户需要拥有检索并向 Amazon EMR 和 EC2 实例分配角色的权限。否则,会出现 User account is not authorized to call EC2 (未授权用户账户调用 EC2) 错误。有关更多信息,请参阅允许用户和组创建和修改角色

使用控制台指定自定义角色

在创建集群时,您可以使用 Advanced options (高级选项) 指定适用于 Amazon EMR 的自定义服务角色、适用于 EC2 实例配置文件的自定义角色和自定义 Auto Scaling 角色。当您使用 Quick options (快速选项) 时,将指定默认服务角色和适用于 EC2 实例配置文件的默认角色。有关更多信息,请参阅使用默认 IAM 角色和托管策略

使用控制台指定自定义 IAM 角色

  1. 通过以下网址打开 Amazon EMR 控制台:https://console.amazonaws.cn/elasticmapreduce/

  2. Choose Create cluster, Go to advanced options.

  3. 选择适合您应用程序的集群设置,直至到达 Security Options (安全选项)

    Permissions (权限) 下,选择适用于 Amazon EMR 的 Default (默认) 角色。

  4. 选择 Custom (自定义)

  5. 对于每个角色类型,从列表中选择一个角色。系统只会列出您的账户中具有针对相应角色类型的适当信任策略的角色。

  6. 选择适用于您集群的其他选项,然后选择 Create Cluster (创建集群)

使用 AWS CLI 指定自定义角色

您可以使用 AWS CLI 中的 create-cluster 命令和选项指定一个服务角色和一个适用于 EC2 实例配置文件的角色。使用 --service-role 选项指定服务角色。使用 InstanceProfile 选项的 --ec2-attributes 参数指定适用于 EC2 实例配置文件的角色。

您可以使用这些选项 (而不是使用 --use-default-roles 选项) 来显式指定默认角色。--use-default-roles 选项指定在 CLI 配置文件中定义的服务角色和适用于 EC2 实例配置文件的角色,您可以更新这些角色,以实现您的自定义角色。有关更多信息,请参阅使用默认 IAM 角色和托管策略

Auto Scaling 角色是使用单独的选项 --auto-scaling-role 指定的。有关更多信息,请参阅使用 Amazon EMR 中的自动扩展功能

使用 AWS CLI 指定自定义 IAM 角色

  • 以下命令将在启动集群时指定自定义服务角色 MyEMRServiceRole 和适用于 EC2 实例配置文件的自定义角色 MyEC2RoleForEMR。本示例使用默认 Amazon EMR 角色。

    注意

    包含了 Linux 行继续符 (\) 以提高可读性。可以在 Linux 命令中删除或使用它们。对于 Windows,请删除它们或将其替换为脱字号 (^)。

    aws emr create-cluster --name "Test cluster" --release-label emr-5.20.0 \ --applications Name=Hive Name=Pig --service-role MyEMRServiceRole \ --ec2-attributes InstanceProfile=MyEC2RoleForEMR,\ KeyName=myKey --instance-type m4.large --instance-count 3