MaxCompute投递任务(新版)运行时,需要将读取到的Logstore中数据投递到MaxCompute的表中,您可以使用自定义角色完成该操作。本文介绍如何对自定义角色进行授权。
前提条件
- 已创建RAM角色(例如MaxComputeShipRole)。具体操作,请参见创建RAM角色。
- 如果您使用的是RAM用户,请确保该用户具备操作RAM角色授权的权限。
同账号投递
授予RAM角色写MaxCompute的权限后,MaxCompute投递任务可以使用该角色将Logstore中的数据写入到目标MaxCompute的表中。此处通过添加RAM角色为工作空间成员的方式完成授权。
您可以通过可视化界面或命令行进行RAM角色授权。
通过可视化界面完成授权
- 修改RAM角色信任策略。
- 添加RAM角色为工作空间成员。
- 授予RAM角色操作MaxCompute表的权限。
通过命令行完成授权
- 登录MaxCompute控制台。
- 在页面左上角,选择地域。
- 在项目管理页签中,单击目标项目对应的数据开发。
- 新建业务流程。
- 在数据开发页面,选择 。
- 在新建业务流程对话框中,设置业务名称,然后单击新建。
- 新建节点。
- 在已创建的节点编辑框中,执行如下命令,完成授权。
命令 说明 USE project-name;
指定MaxCompute项目,需与您在创建MaxCompute投递任务(新版)时设置的MaxCompute项目保持一致。更多信息,请参见创建MaxCompute投递任务(新版)。 ADD USER RAM$****.aliyunid.com:`role/maxcomputeshiprole`;
在MaxCompute项目空间中添加用户。 - ****.aliyunid.com为MaxCompute项目所属的阿里云账号。您可以通过
list users;
命令查看对应的阿里云账号。 - maxcomputeshiprole为自定义RAM角色的名称,必须为小写格式。
GRANT DESCRIBE, ALTER, UPDATE ON TABLE table-name to user RAM$****.aliyunid.com:`role/maxcomputeshiprole`;
授予用户查看、修改、更新目标MaxCompute表的权限。 说明 该授权只针对指定的MaxCompute表,如果您希望目标用户可以操作当前MaxCompute项目下的所有表,请执行GRANT admin to user RAM$****.aliyunid.com:`role/maxcomputeshiprole`;
命令完成授权。SHOW GRANTS FOR `RAM$****.aliyunid.com:role/maxcomputeshiprole`;
确认授权是否成功。 如果返回如下类似信息表示授权成功。Authorization Type: ACL [user/RAM$****.aliyunid.com:role/maxcomputeshiprole] A projects/default_project_****/tables/****: Describe | Alter | Update
在授权过程中,可能发生如下报错。- 在操作过程中出现
FAILED: mismatched input
错误,表示当前的RAM用户没有执行ADD USER
等语句的权限。更多信息,请参见出现FAILED: mismatched input
错误时,如何解决。 - 在操作过程中出现
FAILED: ODPS-0130013:Authorization exception - Authorization Failed [4003], You have NO privilege to do the PROJECT SECURITY OPERATION for {acs:odps:*:projects/xxxxxx/authorization/users}. Context ID:1111-11111-1111-1111-11111.
错误,表示当前的操作用户无MaxCompute账户操作或者授权权限。更多信息,请参见出现操作用户无权限错误时,如何解决。
- ****.aliyunid.com为MaxCompute项目所属的阿里云账号。您可以通过
完成上述操作后,您可以授权MaxCompute投递任务(新版)使用自定义RAM角色将数据投递到MaxCompute表中。即您在创建MaxCompute投递任务(新版)时,选择写MaxCompute授权为自定义角色,然后输入自定义RAM角色的ARN(例如acs:ram::10**12:role/maxcomputeshiprole)。如何获取ARN,请参见查看RAM角色。

跨账号投递
如果您的日志服务和MaxCompute不属于同一个阿里云账号,例如日志服务属于账号A,MaxCompute属于账号B,则需授予账号B下的RAM角色b写MaxCompute的权限。授权完成后,MaxCompute投递任务可以使用该RAM角色将Logstore中的数据写入到目标MaxCompute表中。
- 修改账号B下RAM角色b的信任策略。
- 添加账号B下的RAM角色b为工作空间成员。
完成上述操作后,您可以授权MaxCompute投递任务(新版)使用账号B下的自定义RAM角色将数据投递到MaxCompute表中。即您在创建MaxCompute投递任务(新版)时,选择写MaxCompute授权为自定义角色,然后输入账号B下的自定义RAM角色的ARN(例如acs:ram::11**13:role/maxcomputeshiprole)。如何获取ARN,请参见查看RAM角色。
