本文主要介绍RAM子账号如何访问其他账号的OSS资源并提交Spark作业。
前提条件
- 您需要准备2个阿里云账号。假设提交Spark作业的是A账号,要访问B账号的OSS资源。为了您操作的便捷性,建议您使用两个浏览器来进行操作,一个浏览器登录A账号,一个浏览器登录B账号。
- A账号下的RAM子账号已经可以访问A账号下的所有资源。具体操作请参见快速配置子账号权限或细粒度配置RAM子账号权限。
操作步骤
- 使用B账号登录RAM控制台创建RAM角色。
- 登录RAM控制台,在左侧导航栏单击RAM角色管理。
- 在RAM角色管理页面,单击创建RAM角色。
- 在创建RAM角色页面的选择类型区域,选择阿里云服务,单击下一步。
- 在创建RAM角色页面的配置角色区域,选择普通服务角色,编辑角色名称(本例中角色名称为test-dla-accross-account),受信服务选择数据湖分析。单击完成。
- 使用B账号登录RAM控制台修改新创建的RAM角色(本例中角色名称为test-dla-accross-account)的权限策略,并为该角色添加访问OSS的权限。
- 使用A账号登录RAM控制台新建自定义权限策略。
- 使用A账号登录RAM控制台为A账号下的RAM子账号,添加步骤3创建的权限策略。
- 登录RAM控制台,在左侧导航栏单击 。
- 在用户页面,定位到需要添加权限策略的RAM子账号,单击RAM子账号链接。
- 在RAM子账号详情页面,单击权限管理。
- 在权限管理页签,单击添加权限。
- 在添加权限页签,授权范围选择云账号全部资源,自定义策略选择步骤3创建的权限策略(test-dla-accross-b-oss)。单击确定。
验证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"
}
}