使用 Amazon 自定义IAM角色 EMR - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon 自定义IAM角色 EMR

您可能需要自定义IAM服务角色和权限,以根据自己的安全要求限制权限。要自定义权限,我们建议您创建新的角色和策略。从托管式策略中的默认角色 (例如 AmazonElasticMapReduceforEC2RoleAmazonElasticMapReduceRole) 的权限开始着手。将相应内容复制并粘贴到新的策略语句中,根据具体情况修改权限,并将修改后的权限策略附加到您创建的角色。您必须拥有相应的IAM权限才能使用角色和策略。有关更多信息,请参阅 允许用户和组创建和修改角色

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

重要

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

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

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

在创建集群时,您可以为 Amazon 指定服务角色EMR和亚马逊EC2实例配置文件的角色。正在创建集群的用户需要权限才能检索角色并将其分配给 Amazon EMR 和EC2实例。否则,账号无权调用就会发生EC2错误。有关更多信息,请参阅 允许用户和组创建和修改角色

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

创建集群时,您可以使用高级选项为 Amazon 指定自定义服务角色EMR、为EC2实例配置文件指定自定义角色和自定义 Auto Scaling 角色。使用快速选项时,会指定EC2实例配置文件的默认服务角色和默认角色。有关更多信息,请参阅 IAMAmazon 使用的服务角色 EMR

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

使用控制台创建集群时,必须为 Amazon EMR 指定自定义服务角色并为EC2实例配置文件指定自定义角色。有关更多信息,请参阅 IAMAmazon 使用的服务角色 EMR

  1. 登录 AWS Management Console,然后通过 https://console.aws.amazon.com/em r 打开亚马逊EMR控制台。

  2. EC2在左侧导航窗格的 “开” 下EMR,选择 “集群”,然后选择 “创建集群”。

  3. 在 “安全配置和权限” 下,找到 “IAM实例配置文件” 和 “Amazon 的服务角色 EMR” 字段。对于每个角色类型,从列表中选择一个角色。系统只会列出您的账户中具有针对相应角色类型的适当信任策略的角色。

  4. 选择适用于集群的任何其他选项。

  5. 要启动集群,选择 Create cluster(创建集群)。

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

您可以使用create-cluster命令中的选项为 Amazon 明确指定服务角色EMR和集群EC2实例的服务角色 AWS CLI。使用 --service-role 选项指定服务角色。使用--ec2-attributes选项的InstanceProfile参数为EC2实例配置文件指定角色。

将使用单独的选项(--auto-scaling-role)指定 Auto Scaling 角色。有关更多信息,请参阅 在 Amazon 中使用带有自定义策略的自动扩展实例组 EMR

要指定自定义IAM角色,请使用 AWS CLI
  • 以下命令指定自定义服务角色,MyCustomServiceRoleForEMR,以及EC2实例配置文件的自定义角色,MyCustomServiceRoleForClusterEC2Instances,当启动集群时。此示例使用默认的 Amazon EMR 角色。

    注意

    为了便于读取,包含 Linux 行继续符 (\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号(^)。

    aws emr create-cluster --name "Test cluster" --release-label emr-7.3.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选项为文件中定义的EC2实例配置config文件指定服务角色和角色 AWS CLI。

以下示例演示了 Amazon AWS CLI 的指定自定义角色config的文件内容EMR。使用此配置文件后,如果指定了该--use-default-roles选项,则使用创建集群 MyCustomServiceRoleForEMR 以及 MyCustomServiceRoleForClusterEC2Instances。 默认情况下,该config文件将默认值指定service_roleAmazonElasticMapReduceRole,将默认值指定instance_profileEMR_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