View a markdown version of this page

将服务相关角色与 Amazon EMR 结合使用以预写日志记录 - Amazon EMR

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

将服务相关角色与 Amazon EMR 结合使用以预写日志记录

亚马逊 EMR 使用 AWS Identity and Access Management (IAM) 服务相关角色。服务相关角色是一种独特的 IAM 角色,直接关联到 Amazon EMR。 Service-linked 角色由 Amazon EMR 预定义,包括该服务代表您调用其他 AWS 服务所需的所有权限。

Service-linked 角色与亚马逊 EMR 服务角色和亚马逊 EMR 的 Amazon EC2 实例配置文件配合使用。有关服务角色和实例配置文件的更多信息,请参阅配置 IAM 服务角色以获得 Amazon EMR 权限 AWS 服务和资源。

服务相关角色让您可以轻松设置 Amazon EMR,因为您不必手动添加必要的权限。Amazon EMR 定义其服务相关角色的权限,除非另外定义,否则只有 Amazon EMR 可以代入该角色。定义的权限包括信任策略和权限策略,而且权限策略不能附加到任何其他 IAM 实体。

只有在删除相关资源并终止账户中的所有 EMR 集群后,才能删除 Amazon EMR 的服务相关角色。这将保护您的 Amazon EMR 资源,以免无意中删除访问资源的权限。

Service-linked 预写日志 (WAL) 的角色权限

Amazon EMR 使用服务相关角色AWSServiceRoleForEMRWAL检索集群状态。

AWSServiceRoleForEMRWAL 服务相关角色信任以下服务来代入该角色:

  • emrwal.amazonaws.com

服务相关角色的 EMRDescribeClusterPolicyForEMRWAL 权限策略允许 Amazon EMR 对指定资源完成以下操作:

  • 操作:* 上的 DescribeCluster

您必须配置权限以允许 IAM 实体(本例中为 Amazon EMR WAL)创建、编辑或删除服务相关角色。根据需要将以下语句添加到实例配置文件的权限策略中:

允许 IAM 实体创建 AWSServiceRoleForEMRWAL服务相关角色

将以下语句添加到需要创建服务相关角色的 IAM 实体的权限策略:

{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/emrwal.amazonaws.com*/AWSServiceRoleForEMRWAL*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "emrwal.amazonaws.com", "elasticmapreduce.amazonaws.com.rproxy.goskope.com.cn" ] } } }

允许 IAM 实体编辑 AWSServiceRoleForEMRWAL 服务相关角色的描述

将以下语句添加到需要编辑服务相关角色的描述的 IAM 实体的权限策略:

{ "Effect": "Allow", "Action": [ "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/aws-service-role/emrwal.amazonaws.com*/AWSServiceRoleForEMRWAL*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "emrwal.amazonaws.com", "elasticmapreduce.amazonaws.com.rproxy.goskope.com.cn" ] } } }

允许 IAM 实体删除 AWSServiceRoleForEMRWAL服务相关角色

将以下语句添加到需要删除服务相关角色的 IAM 实体的权限策略:

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "emrwal.amazonaws.com", "elasticmapreduce.amazonaws.com.rproxy.goskope.com.cn" ] } } }

为 Amazon EMR 创建服务相关角色

您无需手动创建 AWSServiceRoleForEMRWAL 角色。当您使用 EMRWAL CLI 或从创建 WAL 工作空间时,Amazon EMR 会自动创建此服务相关角色 AWS CloudFormation,或者当您为 Amazon EMR WAL 配置工作空间且服务相关角色尚不存在时,HBase 将创建服务相关角色。您必须拥有创建服务相关角色的权限。有关将此功能添加到 IAM 实体(如用户、组或角色)权限策略的示例语句,请参阅上一节 Service-linked 预写日志 (WAL) 的角色权限。

为 Amazon EMR 编辑服务相关角色

Amazon EMR 不允许您编辑 AWSServiceRoleForEMRWAL 服务相关角色。创建服务相关角色后,您无法更改服务相关角色的名称,因为各种实体可能会引用服务相关角色。但您可以使用 IAM 编辑服务相关角色的描述。

编辑服务相关角色描述(IAM 控制台)

您可以使用 IAM 控制台编辑服务相关角色的描述。

编辑服务相关角色的描述(控制台)
  1. 在 IAM 控制台的导航窗格中,选择角色。

  2. 以下代码示例显示如何将 IAM 策略附加到用户。

  3. 在 Role description (角色描述) 的右侧,选择 Edit (编辑)。

  4. 在框中键入新描述,然后选择 Save changes (保存更改)。

编辑服务相关角色描述(IAM CLI)

您可以使用中的 IAM 命令 AWS Command Line Interface 来编辑服务相关角色的描述。

更改服务相关角色的描述(CLI)
  1. (可选) 要查看角色的当前描述,请使用以下命令:

    $ aws iam get-role --role-name role-name

    通过 CLI 命令使用角色名称(并非 ARN)指向角色。例如,如果某个角色的 ARN 为 arn:aws:iam::123456789012:role/myrole,则将该角色称为 myrole。

  2. 要更新服务相关角色的描述,请使用以下命令之一:

    $ aws iam update-role-description --role-name role-name --description description

编辑服务相关角色描述(IAM API)

您可以使用 IAM API 编辑服务相关角色的描述。

更改服务相关角色的描述(API)
  1. (可选) 要查看角色的当前描述,请使用以下命令:

    IAM API:GetRole

  2. 要更新角色的描述,请使用以下命令:

    IAM API:UpdateRoleDescription

删除适用于 Amazon EMR 的服务相关角色

如果您不再需要使用需要服务相关角色的功能或服务,建议您删除该服务相关角色。这样,您就不会有未被主动监控或维护的未使用实体。但是,您必须先清除您的服务相关角色,然后才能将其删除。

注意

如果您删除 AWSServiceRoleForEMRWAL 角色,预写日志记录操作不会受到影响,但是 Amazon EMR 不会在您的 EMR 集群终止后自动删除其创建的日志。因此,如果删除服务相关角色,则需要手动删除 Amazon EMR WAL 日志。

清除服务相关角色

必须先确认服务相关角色没有活动会话并删除该角色使用的任何资源,然后才能使用 IAM 删除服务相关角色。

在 IAM 控制台中检查服务相关角色是否具有活动会话
  1. 使用 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择角色。选择 AWSServiceRoleForEMRWAL 角色的名称(不是复选框)。

  3. 在选定角色的 Summary (摘要) 页面上,选择 Access Advisor (访问顾问)。

  4. 在 Access Advisor (访问顾问) 选项卡上,查看服务相关角色的近期活动。

    注意

    如果您不确定 Amazon EMR 是否在使用该 AWSServiceRoleForEMRWAL 角色,则可以尝试删除服务相关角色。如果服务正在使用该角色,则删除将失败,您可以查看正在使用服务相关角色的区域。如果正在使用服务相关角色,则必须等待会话结束,然后才能删除服务相关角色。您无法撤销服务相关角色对会话的权限。

移除使用的 Amazon EMR 资源 AWSServiceRoleForEMRWAL

删除服务相关角色(IAM 控制台)

您可以使用 IAM 控制台删除服务相关角色。

删除服务相关角色 (控制台)
  1. 使用 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择角色。选中旁边的复选框 AWSServiceRoleForEMRWAL,而不是名称或行本身。

  3. 对于页面顶部的角色操作,请选择删除角色。

  4. 在确认对话框中,查看上次访问服务的数据,该数据显示每个选定角色上次访问 AWS 服务的时间。这样可帮助您确认角色当前是否处于活动状态。要继续,请选择 Yes, Delete(是的,删除)。

  5. 监视 IAM 控制台通知,以监控服务相关角色的删除进度。由于 IAM 服务相关角色删除是异步的,因此,在您提交角色进行删除后,删除任务可能成功,也可能失败。如果任务失败,您可以从通知中选择 View details 或 View Resources 以了解删除失败的原因。如果因角色正在使用服务中的资源而导致删除操作失败,则失败原因将包含一个资源列表。

删除服务相关角色(IAM CLI)

您可以使用中的 IAM 命令 AWS Command Line Interface 删除服务相关角色。如果服务相关角色正被使用或具有关联的资源,则无法删除它,因此您必须提交删除请求。如果不满足这些条件,该请求可能会被拒绝。

删除服务相关角色(CLI)
  1. 要查看删除任务的状态,您必须从响应中捕获 deletion-task-id。键入以下命令以提交服务相关角色的删除请求:

    $ aws iam delete-service-linked-role --role-name AWSServiceRoleForEMRWAL
  2. 键入以下命令以检查删除任务的状态:

    $ 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)
  1. 要提交服务相关角色的删除请求,请致电DeleteServiceLinkedRole。在请求中,指定 AWSServiceRoleForEMRWAL 角色名称。

    要查看删除任务的状态,您必须从响应中捕获 DeletionTaskId。

  2. 要检查删除的状态,请调用 GetServiceLinkedRoleDeletionStatus。在请求中,指定 DeletionTaskId。

    删除任务的状态可能是 NOT_STARTED、IN_PROGRESS、SUCCEEDED 或 FAILED。如果删除失败,则调用会返回失败的原因,以便您进行问题排查。

支持的区域 AWSServiceRoleForEMRWAL

Amazon EMR 支持在以下区域使用 AWSServiceRoleForEMRWAL 服务相关角色。

区域名称 区域标识 Amazon EMR 支持
美国东部(弗吉尼亚州北部) us-east-1 是
美国东部(俄亥俄州) us-east-2 是
美国西部(北加利福尼亚) us-west-1 是
美国西部(俄勒冈州) us-west-2 是
亚太地区(孟买) ap-south-1 是
亚太地区(新加坡) ap-southeast-1 是
亚太地区(悉尼) ap-southeast-2 是
亚太地区(东京) ap-northeast-1 是
欧洲地区(法兰克福) eu-central-1 是
欧洲地区(爱尔兰) eu-west-1 是