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

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

使用 Amazon EMR 自定义 IAM 角色

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

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

重要

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

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

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

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

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

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

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

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

  1. 登录 AWS Management Console,然后在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com

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

  3. Security configuration and permissions(安全配置和权限)下,找到 IAM role for instance profile(适用于实例配置文件的 IAM 角色)和 Service role for Amazon EMR(适用于 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
  • 以下命令指定启动集群时的自定义服务角色和 EC2 实例配置文件的自定义角色。MyCustomServiceRoleForEMR MyCustomServiceRoleForClusterEC2Instances本示例使用默认 Amazon EMR 角色。

    注意

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

    aws emr create-cluster --name "Test cluster" --release-label emr-7.6.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 EM AWS CLI R 的指定自定义角色config的文件内容。使用此配置文件,指定 --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