本文介绍在E-MapReduce控制台上,通过创建集群时在基础配置页面的高级设置区域设置ECS应用角色,实现以免密的方式访问同账号下的其它资源。例如,对象存储OSS和日志服务SLS。

背景信息

您在创建集群时可以使用自定义的角色,通过给该角色不同的权限策略,以限制集群访问外部资源的权限。例如,您可以进行如下操作:
  • 指定集群只能访问指定OSS的数据目录。
  • 指定集群访问指定的外部资源。

前提条件

操作流程

  1. 步骤一:新建权限策略
  2. 步骤二:创建RAM角色
  3. 步骤三:创建集群并访问外部资源

步骤一:新建权限策略

  1. 进入新建自定义权限策略页面。
    1. 使用云账号登录RAM控制台
    2. 在RAM访问控制页面,选择权限管理 > 权限策略
    3. 权限策略页面,单击创建权限策略
  2. 新建自定义权限策略页面,配置以下信息。
    参数 描述
    策略名称 本示例为test-emr。
    配置模式 选择脚本配置
    策略内容 添加如下策略。
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "oss:GetObject",
                    "oss:ListObjects"
                ],
                "Resource": [
                    "acs:oss:*:*:emr-logs2",
                    "acs:oss:*:*:emr-logs2/*"
                ],
                "Effect": "Allow"
            }
        ]
    }
    说明 策略中涉及的元素如下所示:
    • Action:是指对具体资源的操作。本示例是OSS的读取和查询目录的权限。
    • Resource:是指被授权的具体对象。本示例是访问test-emr的OSS Bucket及其中的内容。
    更多权限策略的基本元素,请参见权限策略基本元素
  3. 单击确定

步骤二:创建RAM角色

  1. 在RAM访问控制页面,选择身份管理 > 角色
  2. 角色页面,单击创建角色
  3. 创建RAM角色。
    1. 单击阿里云服务
    2. 单击下一步
    3. 配置角色面板,配置以下信息。
      参数 描述
      角色名称 本示例为test-emr。
      选择授信服务 选择云服务器
    4. 单击完成
  4. 可选:修改授信服务。
    注意 如果您创建的集群是EMR 3.32之后版本、EMR 4.5之后版本或EMR 5.x及之后版本,则无需执行本步骤。
    1. 角色页面,单击刚创建的角色名称
    2. 单击信任策略管理页签。
    3. 单击修改信任策略
    4. 修改ecs.aliyuncs.comemr.aliyuncs.com
      策略
    5. 单击确定
  5. 添加相应权限。
    1. 角色页面,单击刚创建角色名称的操作列的添加权限
    2. 添加权限页面,单击自定义策略,添加新建的权限策略。
    3. 单击确定
    4. 单击完成

步骤三:创建集群并访问外部资源

  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域和资源组
  3. 单击创建集群,在基础配置页面的高级设置区域,添加步骤二:创建RAM角色中创建的角色名称。创建详情请参见创建集群
    ECS_authority
  4. 集群创建成功后,通过SSH登录主节点,详情请参见登录集群
    执行以下命令,验证授权是否成功。
    hdfs dfs -ls oss://<yourBucketName>/
    说明 示例中的<yourBucketName>为您OSS Bucket的名称。
    • 没有该Bucket访问权限时,提示如下信息。无权限
    • 有该Bucket访问权限时,提示如下信息。emr-logs2

常见问题

  • Q:创建集群时提示NoPermission。
    A:您可以参照如下方式排查解决。
    1. 您创建集群使用的用户是否有创建集群和更换ECS应用角色的权限,如果该RAM用户权限为AliyunEMRDevelopAccess可以修改为AliyunEMRFullAccess。
    2. 创建集群时ECS应用角色名称是否填写正确。
    3. 授信策略是否修改为emr.aliyuncs.com
  • Q:HDFS无法访问OSS路径hdfs_oss
    A:您可以参照如下方式排查解决。
    1. 确认访问的OSS Bucket是否和集群在一个地域(Region),如果不在同一地域(Region),在访问链接中需要添加相应的Endpoint。
    2. 确认访问的OSS Bucket是否包含在新建的权限策略中,如果没有,需要修改权限策略。
    3. 确认是否在OSS控制台上设置了该Bucket的相关权限。如果设置了相关权限,您可以在OSS控制台上取消相关权限的设置,通过设置权限策略中的Action内容来设置相关权限。