本文主要介绍RAM子账号如何访问其他账号的OSS资源并提交Spark作业。

前提条件

  • 您需要准备2个阿里云账号。假设提交Spark作业的是A账号,要访问B账号的OSS资源。为了您操作的便捷性,建议您使用两个浏览器来进行操作,一个浏览器登录A账号,一个浏览器登录B账号。
  • A账号下的RAM子账号已经可以访问A账号下的所有资源。具体操作请参见快速配置子账号权限细粒度配置RAM子账号权限

操作步骤

  1. 使用B账号登录RAM控制台创建RAM角色。
    如何创建RAM角色,请参见创建可信实体为阿里云服务的RAM角色
  2. 使用B账号登录RAM控制台修改新创建的RAM角色的信任策略。
    如何修改RAM角色的信任策略,请参见修改RAM角色的信任策略
  3. 为RAM角色授予访问OSS的权限。
    如何为RAM角色授权,请参见为RAM角色授权
  4. 使用A账号登录RAM控制台创建自定义权限策略。
    如何创建自定义权限策略,请参见创建自定义权限策略
  5. 使用A账号登录RAM控制台为A账号下的RAM角色,添加步骤4创建的权限策略。
    如何添加权限策略,请参见为RAM角色授权

验证RAM子账号跨账号访问OSS配置

账号A的RAM子账号在提交Spark任务时,需要在conf参数中增加spark.dla.roleArn配置,spark.dla.roleArn的值就是步骤2中B账号的ARN值。示例如下:
{
    "name": "<作业名称>",
    "file": "<oss://path/to/your/jar>",
    "className": "<mainclass>",
    "args": [
        "作业参数1",
        "作业参数2"
    ],
    "conf": {
        "spark.dla.roleArn": "acs:ram::xxxxxx:role/test-dla-accross-account"
        "spark.driver.resourceSpec": "small",
        "spark.executor.instances": 2,
        "spark.executor.resourceSpec": "small"
    }
}