本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对 Amazon EMR 使用服务相关角色
Amazon EMR 使用 AWS Identity and Access Management(IAM)服务相关角色。服务相关角色是一种独特类型的 IAM 角色,它与 Amazon EMR 直接相关。服务相关角色由 Amazon EMR 预定义,包含 Amazon EMR 代表您调用 Amazon EC2 来清除不再使用的集群资源所需的权限。服务相关角色与 Amazon EMR 服务角色和 Amazon EMR 的 Amazon EC2 实例配置文件一起使用。有关服务角色和实例配置文件的更多信息,请参阅为 Amazon EMR 配置 IAM 服务角色对AWS服务和资源的权限。
Amazon EMR 定义此服务相关角色的权限,除非另外定义,否则只有 Amazon EMR 可以代入该角色。定义的权限包括信任策略和权限策略,以及不能附加到任何其它 IAM 实体的权限策略。只能在终止账户中的所有 EMR 集群后删除角色。
有关支持服务相关角色的其他服务的信息,请参阅可与 IAM 配合使用的 AWS 服务,并查找 Service-Linked Role(服务相关角色)列中为 Yes(是)的服务。请选择 Yes 与查看该服务的服务相关角色文档的链接。
Amazon EMR 的服务相关角色权限
亚马逊 EMR 使用AWSServiceRoleForEMRCleanup角色,这是一个基于服务的角色,它允许 Amazon EMR 在 Amazon EMR 服务角色失去该权限时代表您终止和删除 Amazon EC2 资源。如果该角色尚不存在,Amazon EMR 在集群创建期间会自动创建该角色。
的 AWSServiceRoleForEMRCleanup 服务相关角色信任以下服务来代入该角色:
-
elasticmapreduce.amazonaws.com
的 AWSServiceRoleForEMRCleanup 服务相关角色权限策略允许 Amazon EMR 对指定资源完成以下操作:
操作:
ec2
上的DescribeInstances
操作:
DescribeSpotInstanceRequests
上的ec2
操作:
ModifyInstanceAttribute
上的ec2
操作:
TerminateInstances
上的ec2
操作:
CancelSpotInstanceRequests
上的ec2
操作:
DeleteNetworkInterface
上的ec2
操作:
DescribeInstanceAttribute
上的ec2
操作:
DescribeVolumeStatus
上的ec2
操作:
DescribeVolumes
上的ec2
-
操作:
DetachVolume
上的ec2
操作:
ec2
上的DeleteVolume
必须配置权限,允许 IAM 实体(如用户、组或角色)创建、编辑或删除服务相关角色。
允许 IAM 实体创建 AWSServiceRoleForEMRCleanup 服务相关角色
将以下语句添加到需要创建服务相关角色的 IAM 实体的权限策略:
{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "elasticmapreduce.amazonaws.com", "elasticmapreduce.amazonaws.com.cn" ] } } }
允许 IAM 实体编辑的描述 AWSServiceRoleForEMRCleanup服务相关角色
将以下语句添加到需要编辑服务相关角色的描述的 IAM 实体的权限策略:
{ "Effect": "Allow", "Action": [ "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "elasticmapreduce.amazonaws.com", "elasticmapreduce.amazonaws.com.cn" ] } } }
允许 IAM 实体删除 AWSServiceRoleForEMRCleanup 服务相关角色
将以下语句添加到需要删除服务相关角色的 IAM 实体的权限策略:
{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "elasticmapreduce.amazonaws.com", "elasticmapreduce.amazonaws.com.cn" ] } } }
为 Amazon EMR 创建服务相关角色
您无需手动创建 AWSServiceRoleForEMRCleanup 角色。当您启动集群时,无论是首次启动还是当服务相关角色不存在时,Amazon EMR 都会为您创建服务相关角色。您必须具备创建服务相关角色的 权限。有关将此功能添加到 IAM 实体(例如,用户、组或角色)的权限策略的示例语句,请参阅Amazon EMR 的服务相关角色权限。
重要
如果您在 2017 年 10 月 24 日之前使用 Amazon EMR,当时不支持服务相关角色,那么 Amazon EMR 会创建一个 AWSServiceRoleForEMRCleanup 在您的账户中扮演角色。有关更多信息,请参阅我的 IAM 账户中出现新角色。
为 Amazon EMR 编辑服务相关角色
亚马逊 EMR 不允许您编辑 AWSServiceRoleForEMRCleanup 服务相关角色。创建服务相关角色后,将无法更改角色名称,因为可能有多个实体引用该角色。但是可以使用 IAM 编辑角色说明。
编辑服务相关角色描述(IAM 控制台)
您可以使用 IAM 控制台编辑服务相关角色的描述。
编辑服务相关角色的描述 (控制台)
-
在 IAM 控制台的导航窗格中,选择 Roles。
-
以下代码示例显示如何将 IAM policy 附加到用户。
-
在 Role description (角色描述) 的右侧,选择 Edit (编辑)。
-
在框中键入新描述,然后选择 Save changes (保存更改)。
编辑服务相关角色描述(IAM CLI)
您可以从 AWS Command Line Interface 使用 IAM 命令编辑服务相关角色的描述。
更改服务相关角色的描述 (CLI)
-
(可选) 要查看角色的当前描述,请使用以下命令:
$
aws iam get-role --role-name
role-name
通过 CLI 命令使用角色名称(并非 ARN)指向角色。例如,如果某个角色的 ARN 为
arn:aws:iam::123456789012:role/myrole
,则将该角色称为myrole
。 -
要更新服务相关角色的描述,请使用以下命令之一:
$
aws iam update-role-description --role-name
role-name
--descriptiondescription
编辑服务相关角色描述(IAM API)
您可以使用 IAM API 编辑服务相关角色的描述。
更改服务相关角色的描述 (API)
-
(可选) 要查看角色的当前描述,请使用以下命令:
我是 API:GetRole
-
要更新角色的描述,请使用以下命令:
我是 API:UpdateRoleDescription
删除适用于 Amazon EMR 的服务相关角色
如果您不再需要使用某个需要服务相关角色的功能或服务,我们建议您删除该角色。这样,您就不会有未被主动监控或维护的未使用实体。但是,您必须先清除您的服务相关角色,然后才能将其删除。
清除服务相关角色
必须先确认服务相关角色没有活动会话并删除该角色使用的任何资源,然后才能使用 IAM 删除服务相关角色。
在 IAM 控制台中检查服务相关角色是否具有活动会话
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Roles(角色)。选择的名称(不是复选框) AWSServiceRoleForEMRCleanup 角色。
-
在选定角色的 Summary (摘要) 页面上,选择 Access Advisor (访问顾问)。
-
在 Access Advisor (访问顾问) 选项卡上,查看服务相关角色的近期活动。
注意
如果您不确定亚马逊 EMR 是否在使用 AWSServiceRoleForEMRCleanup 角色,你可以尝试删除该角色。如果服务正在使用该角色,则删除操作会失败,并且您可以查看正在使用该角色的 区域。如果该角色已被使用,则您必须等待会话结束,然后才能删除该角色。您无法撤销服务相关角色对会话的权限。
移除使用的 Amazon EMR 资源 AWSServiceRoleForEMRCleanup
-
终止您的账户中的所有集群。有关更多信息,请参阅终止集群。
删除服务相关角色(IAM 控制台)
您可以使用 IAM 控制台删除服务相关角色。
删除服务相关角色 (控制台)
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Roles(角色)。选中旁边的复选框 AWSServiceRoleForEMRCleanup,而不是名称或行本身。
-
对于页面顶部的角色操作,请选择删除角色。
-
在确认对话框中,查看上次访问服务数据,该数据显示每个选定角色上次访问AWS服务的时间。这样可帮助您确认角色当前是否处于活动状态。要继续,请选择 Yes, Delete(是的,删除)。
-
监视 IAM 控制台通知,以监控服务相关角色的删除进度。由于 IAM 服务相关角色删除是异步的,因此,在您提交角色进行删除后,删除任务可能成功,也可能失败。如果任务失败,您可以从通知中选择 View details 或 View Resources 以了解删除失败的原因。如果因角色正在使用服务中的资源而导致删除操作失败,则失败原因将包含一个资源列表。
删除服务相关角色(IAM CLI)
您可以从 AWS Command Line Interface 使用 IAM 命令删除服务相关角色。如果服务相关角色正被使用或具有关联的资源,则无法删除它,因此您必须提交删除请求。如果不满足这些条件,该请求可能会被拒绝。
删除服务相关角色 (CLI)
-
要查看删除任务的状态,您必须从响应中捕获
deletion-task-id
。键入以下命令以提交服务相关角色的删除请求:$
aws iam delete-service-linked-role --role-name AWSServiceRoleForEMRCleanup
-
键入以下命令以检查删除任务的状态:
$
aws iam get-service-linked-role-deletion-status --deletion-task-id
deletion-task-id
删除任务的状态可能是
NOT_STARTED
、IN_PROGRESS
、SUCCEEDED
或FAILED
。如果删除失败,则调用会返回失败的原因,以便您进行问题排查。
删除服务相关角色(IAM API)
您可以使用 IAM API 删除服务相关角色。如果服务相关角色正被使用或具有关联的资源,则无法删除它,因此您必须提交删除请求。如果不满足这些条件,该请求可能会被拒绝。
删除服务相关角色 (API)
-
要提交服务相关角色的删除请求,请调用DeleteServiceLinkedRole。在请求中,指定 AWSServiceRoleForEMRCleanup 角色名。
要查看删除任务的状态,您必须从响应中捕获
DeletionTaskId
。 -
要检查删除的状态,请调用 GetServiceLinkedRoleDeletionStatus。在请求中,指定
DeletionTaskId
。删除任务的状态可能是
NOT_STARTED
、IN_PROGRESS
、SUCCEEDED
或FAILED
。如果删除失败,则调用会返回失败的原因,以便您进行问题排查。
Amazon EMR 服务相关角色支持的区域
Amazon EMR 支持在以下区域中使用服务相关角色。
区域名称 | 区域标识 | Amazon EMR 支持 |
---|---|---|
美国东部(弗吉尼亚州北部) | us-east-1 | 是 |
US East (Ohio) | us-east-2 | 是 |
美国西部(北加利福尼亚) | us-west-1 | 是 |
美国西部(俄勒冈州) | us-west-2 | 是 |
亚太地区(孟买) | ap-south-1 | 是 |
亚太地区(大阪) | ap-northeast-3 | 是 |
亚太地区(首尔) | ap-northeast-2 | 是 |
亚太地区(新加坡) | ap-southeast-1 | 是 |
Asia Pacific (Sydney) | ap-southeast-2 | 是 |
亚太地区(东京) | ap-northeast-1 | 是 |
Canada (Central) | ca-central-1 | 是 |
欧洲(法兰克福) | eu-central-1 | 是 |
Europe (Ireland) | eu-west-1 | 是 |
欧洲(伦敦) | eu-west-2 | 是 |
欧洲(巴黎) | eu-west-3 | 是 |
South America (São Paulo) | sa-east-1 | 是 |