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

使用默认 IAM 角色和托管策略

Amazon EMR 提供了下面列出的默认角色。默认情况下,将列出托管策略并将它们附加到这些角色。在您创建这些角色和策略之前,它们在您的账户中不存在。创建它们后,您可以查看角色、挂载到角色的策略以及被 IAM 控制台 (https://console.amazonaws.cn/iam/) 中的策略允许或拒绝的权限。托管策略由 AWS 创建和维护,因此如果服务要求发生变化,这些策略将自动更新。

默认角色 说明 默认托管策略

EMR_DefaultRole

这是允许 Amazon EMR 代表您调用其他 AWS 服务(如 Amazon EC2)的 EMR 角色。

AmazonElasticMapReduceRole.

重要

请求 Spot 实例需要服务相关角色。如果此角色不存在,Amazon EMR 服务角色必须拥有创建它的权限,否则会出现权限错误。托管策略包含一个允许此操作的语句。如果您自定义此角色或策略,请确保包含一个允许创建此服务相关角色的语句。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 AmazonElasticMapReduceRole 权限策略的默认内容适用于 Spot 实例请求的服务相关角色

EMR_EC2_DefaultRole

适用于集群中的 EC2 实例的 EMR 角色。在集群实例上运行的进程调用其他 AWS 服务时将使用此角色。要访问 Amazon S3 中的 EMRFS 数据,您可以根据发出请求的用户或组或根据数据在 Amazon S3 中的位置指定代入不同的角色。有关更多信息,请参阅为处理 EMRFS 对 Amazon S3 的请求配置 IAM 角色

AmazonElasticMapReduceforEC2Role.有关更多信息,请参阅AmazonElasticMapReduceforEC2Role 权限策略的默认内容

EMR_AutoScaling_DefaultRole

允许用于动态扩展环境的其他操作。只有在 Amazon EMR 中使用自动扩展的集群才需要。有关更多信息,请参阅使用 Amazon EMR 中的自动扩展功能

AmazonElasticMapReduceforAutoScalingRole.有关更多信息,请参阅AmazonMapReduceforAutoScalingRole 权限策略的默认内容

首次在账户中创建适用于 Amazon EMR 的默认 IAM 角色

  1. 如果您以 IAM 用户身份登录,请确保您可以执行用于创建角色的适当 IAM 操作。有关更多信息,请参阅允许用户和组创建和修改角色

  2. 使用 Amazon EMR 控制台创建集群并将默认角色保持指定状态。要执行此操作,可使用 Quick options (快速选项)Advanced options (高级选项)。Amazon EMR 在启动集群时会自动创建该角色。这些角色可用于您之后启动的任何集群。

    – 或 –

    在 AWS CLI 中是 emr create-default-roles 命令。

    该命令的输出列出了角色的内容。在 CLI 配置文件 (config) 中,service_roleinstance_profile 值是用这些角色名称填充的。例如:

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

托管策略内容

适用于 Amazon EMR 默认角色的托管策略的内容如下所示。托管策略是自动更新的,因此此处显示的策略可能已过时。使用以下过程可查看最新的策略。您还可以针对为每个托管策略列出的版本检查下面列出的版本。

查看适用于 Amazon EMR 的当前默认角色和托管策略

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

  2. Choose Create cluster, Go to advanced options.

  3. 选择 Next (下一步),直至到达 Security options (安全选项)

  4. 选择您要查看的服务角色。

  5. 选择要查看策略 JSON 的权限策略。

  6. 选择 Policy versions (策略版本) 以查看当前策略版本号、策略更新的历史记录和过去的版本的策略 JSON。

AmazonElasticMapReduceRole 权限策略的默认内容

下面显示了此策略的版本 9 的内容。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "*", "Action": [ "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotInstanceRequests", "ec2:CreateNetworkInterface", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteNetworkInterface", "ec2:DeleteSecurityGroup", "ec2:DeleteTags", "ec2:DescribeAvailabilityZones", "ec2:DescribeAccountAttributes", "ec2:DescribeDhcpOptions", "ec2:DescribeImages", "ec2:DescribeInstanceStatus", "ec2:DescribeInstances", "ec2:DescribeKeyPairs", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaces", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcs", "ec2:DetachNetworkInterface", "ec2:ModifyImageAttribute", "ec2:ModifyInstanceAttribute", "ec2:RequestSpotInstances", "ec2:RevokeSecurityGroupEgress", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:DeleteVolume", "ec2:DescribeVolumeStatus", "ec2:DescribeVolumes", "ec2:DetachVolume", "iam:GetRole", "iam:GetRolePolicy", "iam:ListInstanceProfiles", "iam:ListRolePolicies", "iam:PassRole", "s3:CreateBucket", "s3:Get*", "s3:List*", "sdb:BatchPutAttributes", "sdb:Select", "sqs:CreateQueue", "sqs:Delete*", "sqs:GetQueue*", "sqs:PurgeQueue", "sqs:ReceiveMessage", "cloudwatch:PutMetricAlarm", "cloudwatch:DescribeAlarms", "cloudwatch:DeleteAlarms", "application-autoscaling:RegisterScalableTarget", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:PutScalingPolicy", "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:Describe*" ] }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot*", "Condition": { "StringLike": { "iam:AWSServiceName": "spot.amazonaws.com" } } } ] }

AmazonElasticMapReduceforEC2Role 权限策略的默认内容

下面显示了此策略的版本 3 的内容。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "*", "Action": [ "cloudwatch:*", "dynamodb:*", "ec2:Describe*", "elasticmapreduce:Describe*", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:ListClusters", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListInstances", "elasticmapreduce:ListSteps", "kinesis:CreateStream", "kinesis:DeleteStream", "kinesis:DescribeStream", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:MergeShards", "kinesis:PutRecord", "kinesis:SplitShard", "rds:Describe*", "s3:*", "sdb:*", "sns:*", "sqs:*", "glue:CreateDatabase", "glue:UpdateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:CreateTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetTable", "glue:GetTables", "glue:GetTableVersions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:CreateUserDefinedFunction", "glue:UpdateUserDefinedFunction", "glue:DeleteUserDefinedFunction", "glue:GetUserDefinedFunction", "glue:GetUserDefinedFunctions" ] } ] }

AmazonMapReduceforAutoScalingRole 权限策略的默认内容

下面显示了此策略的版本 1 的内容。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:DescribeAlarms", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ModifyInstanceGroups" ], "Effect": "Allow", "Resource": "*" } ] }

本页内容: