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

背景信息

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

EMR默认角色为AliyunEmrEcsDefaultRole,详情请参见ECS应用角色(EMR 3.32及之前版本和EMR 4.5及之前版本)

操作流程

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

步骤一:新建权限策略

  1. 使用云账号登录RAM控制台
  2. 在RAM访问控制页面,单击权限管理 > 权限策略管理
  3. 权限策略管理页面,单击创建权限策略
  4. 填写策略名称
    本示例为test-emr。
  5. 选中脚本配置
    添加如下策略。
    {
        "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及其中的内容。
  6. 单击确定

步骤二:创建RAM角色

  1. 使用云账号登录RAM控制台
  2. 创建RAM角色。
    1. 在左侧导航栏中单击RAM角色管理
    2. 单击创建RAM角色
    3. 选择阿里云服务,单击下一步
    4. 设置角色名称,选择授信服务大数据计算服务
      创建RAM角色
    5. 单击完成
  3. 修改授信服务。
    1. RAM角色管理页面,单击刚创建的RAM角色名称
    2. 单击信任策略管理页签。
    3. 单击修改信任策略
    4. 修改ecs.aliyuncs.comemr.aliyuncs.com
      修改授信服务
    5. 单击确定
  4. 添加相应权限。
    1. RAM角色管理页面,单击刚创建的RAM角色名称所在行的添加权限
    2. 添加权限页面,单击自定义策略,添加新建的权限策略。
    3. 单击确定
    4. 单击完成

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

  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域(Region)和资源组
  3. 单击创建集群,在基础配置页面的高级设置区域,添加步骤二:创建RAM角色中创建的角色名称。创建详情请参见创建集群
    ECS_authority
  4. 集群创建成功后,通过SSH登录主节点,详情请参见使用SSH连接主节点
    • 没有该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内容来设置相关权限。