本文详细介绍了如何配置RAM子账号权限来使用DLA Serverless Spark提交作业。

前提条件

操作步骤

  1. 登录RAM控制台为RAM子账号授予访问DLA的权限。
    如何为RAM子账号授权,请参见为RAM用户授权
    权限策略的说明如下:
    权限策略名称 权限策略说明
    AliyunDLAFullAccess 用于数据湖分析的管理员权限,拥有数据湖分析的所有权限,可以执行新建集群、删除集群、提交作业等操作,停止其它账号的作业等操作。拥有授权给DLA账户的角色的使用权。
    AliyunDLAReadOnlyAccess 用于数据湖分析的访客权限,拥有数据湖分析的只读权限,可以查看集群状态、作业状态, 作业日志等信息。无法修改集群的状态,也无法提交作业。
    AliyunDLADeveloperAccess 用于数据湖分析的开发者权限,可以查看集群、作业的状态,提交和执行作业,只能终止自己提交的作业,无法新建和删除集群,拥有授权给DLA账户的角色的使用权。
    说明 在RAM访问控制中,您还可以根据需要自定义创建更细粒度的访问策略,比如一个子账号可以使用哪些集群。具体请参见授予RAM账号细粒度访问DLA的权限。创建完权限策略后,您便可添加该自定义策略给该RAM子账号。
  2. 为了让Spark作业可以访问您的数据,需要为DLA创建一个数据访问的RAM角色。
    如何创建RAM角色,请参见创建角色
    创建RAM角色时,您需要记录如下信息:
    • 最大会话时间:最大的会话时间,可调整,最大可以调整为12小时。
    • ARN:该角色的ID。
    说明 关于RAM角色的更多信息,请参见RAM角色概览
  3. 为创建的RAM角色授权。
    如何为RAM角色授权,请参见为RAM角色授权
  4. 授权允许子账号可以使用步骤3中角色的权限策略。
    如何授权子账号使用角色的权限策略,请参见创建自定义权限策略
  5. 把步骤3中创建的权限策略授权给RAM子账号,对应的RAM子账号便拥有了权限策略中的权限。
    如何授权,请参见为RAM用户授权

验证RAM子账号权限配置

RAM子账号在提交任务时需要在conf参数中增加spark.dla.roleArn。这个值就是步骤2中创建的角色的ARN值。示例如下:
{
    "name": "SparkPi",
    "file": "oss://sparkRoleTest/original-spark-examples_2.11-2.4.5.jar",
    "className": "org.apache.spark.examples.SparkPi",
    "args": [
        "10"
    ],
    "conf": {
        "spark.dla.roleArn": "acs:ram::xxxxxx:role/dla-sub-user-role"
        "spark.driver.resourceSpec": "small",
        "spark.executor.instances": 2,
        "spark.executor.resourceSpec": "small"
    }
}