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 User Guide for Linux Instances 中的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. Open the Amazon EMR console at 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": "*" } ] }

本页内容: