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

自定义 IAM 角色

根据安全要求,您可能需要自定义 IAM 服务角色和权限,从而对权限加以限制。要自定义权限,我们建议您创建新的角色和策略。从托管策略中的默认角色 (例如 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 实例配置文件的默认角色。有关更多信息,请参阅 Amazon EMR 使用的 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 命令的选项显式指定 EMR 的服务角色和集群 EC2 实例的服务角色。使用 --service-role 选项指定服务角色。使用 InstanceProfile 选项的 --ec2-attributes 参数指定适用于 EC2 实例配置文件的角色。

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

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

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

    注意

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

    aws emr create-cluster --name "Test cluster" --release-label emr-5.27.0 \ --applications Name=Hive Name=Pig --service-role MyCustomServiceRoleForEMR \ --ec2-attributes InstanceProfile=MyCustomServiceRoleForClusterEC2Instances,\ KeyName=myKey --instance-type m5.xlarge --instance-count 3

您可以使用这些选项 (而不是使用 --use-default-roles 选项) 来显式指定默认角色。--use-default-roles 选项指定服务角色以及 AWS CLI 的 config 文件中定义的 EC2 实例配置文件的角色。

以下示例显示了 AWS CLI 的 config 文件的内容,该文件指定了 Amazon EMR 的自定义角色。使用该配置文件,当指定 --use-default-roles 选项时,将使用 MyCustomServiceRoleForEMRMyCustomServiceRoleForClusterEC2Instances 创建集群。默认情况下,config 文件将默认 service_role 指定为 AmazonElasticMapReduceRole,将默认 instance_profile 指定为 EMR_EC2_DefaultRole

[default] output = json region = us-west-1 aws_access_key_id = myAccessKeyID aws_secret_access_key = mySecretAccessKey emr = service_role = MyCustomServiceRoleForEMR instance_profile = MyCustomServiceRoleForClusterEC2Instances