MaxCompute投递任务(新版)运行时,需要将读取到的Logstore数据投递到MaxCompute表中,您可以授权MaxCompute投递任务(新版)扮演默认角色完成该操作。
前提条件
如果您使用的是RAM用户,请确保该用户具备操作RAM角色授权的权限。
将您的MaxCompute项目创建为DataWorks的MaxCompute数据源。更多信息,请参见创建MaxCompute数据源。
同账号投递
如果您的日志服务和MaxCompute属于同一个阿里云账号,则您需要单击云资源访问授权,在该账号下创建AliyunLogDefaultRole角色。创建后,还需添加AliyunLogDefaultRole角色为MaxCompute工作空间成员。
操作步骤
修改RAM角色信任策略。
登录RAM控制台。
在左侧导航栏中,选择
。在RAM角色列表中,单击AliyunLogDefaultRole角色。
在信任策略页签下,单击编辑信任策略。
将原有的信任策略替换为如下内容,然后单击保存信任策略。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com", "dataworks.aliyuncs.com" ] } } ], "Version": "1" }
添加RAM角色为工作空间成员。
您可以通过可视化界面或命令行进行RAM角色授权。
通过可视化界面完成授权
登录DataWorks控制台。
在页面左上角,选择地域。
在左侧导航栏中,单击工作空间。
在工作空间列表页面,单击目标工作空间对应的管理。
在工作空间配置,单击空间成员与角色。然后在空间成员页签下,单击添加成员。
在添加成员对话框中,选中当前登录账号和AliyunLogDefaultRole角色,根据页面提示完成添加。
此处需在批量设置角色中选中开发。更多信息,请参见授权给其他用户。
授予AliyunLogDefaultRole角色操作MaxCompute表的权限。
登录MaxCompute控制台,在左上角选择地域。
选择
,在项目管理页面,单击目标项目操作列的管理。在MaxCompute项目管理页面,单击角色权限。
如果出现如下报错,您需要先在角色列表中单击admin对应的成员管理,然后在成员管理对话框中,选中当前登录账号,根据页面提示完成添加。
在角色列表中,单击role_project_admin角色对应的成员管理。
在成员管理对话框中,选中当前登录账号和AliyunLogDefaultRole角色账号,根据页面提示完成添加。
在角色列表中,单击role_project_admin角色对应的编辑角色。
在编辑角色对话框的Table页签下,选择目标MaxCompute表,选中Describe、Alter和Update。
重要上述授权只针对指定的MaxCompute表。如果您希望目标角色可以操作当前MaxCompute空间项目下所有的表,则您可以为当前登录账号和AliyunLogDefaultRole角色账号添加admin角色权限。即在角色列表中,单击admin角色对应的成员管理,然后在成员管理对话框中,选中当前登录账号和AliyunLogDefaultRole角色账号,根据页面提示完成添加。
通过命令行完成授权
登录DataWorks控制台。
在页面左上角,选择地域。
在左侧导航栏中,单击工作空间列表。
在工作空间列表页面,将鼠标悬停至目标工作空间对应的快速进入,然后单击数据开发。
新建业务流程。
在数据开发页面,选择
。在新建业务流程对话框中,设置业务名称,然后单击新建。
新建节点。
在数据开发页面,选择
。在新建节点对话框中,设置节点名称和路径,然后单击确认。
其中,路径需设置为您在上一步中所创建的业务流程。
在已创建的节点编辑框中,执行如下命令,完成授权。
命令
说明
USE project-name;
指定MaxCompute项目,需与您在创建MaxCompute投递任务(新版)时设置的MaxCompute项目保持一致。更多信息,请参见创建MaxCompute投递任务(新版)。
ADD USER RAM$****.aliyunid.com:`role/aliyunlogdefaultrole`;
在MaxCompute项目中添加用户。
****.aliyunid.com为MaxCompute项目所属的阿里云账号。您可以通过
list users;
命令查看对应的阿里云账号。aliyunlogdefaultrole为AliyunLogDefaultRole角色的名称,必须为小写格式。
GRANT CreateInstance ON PROJECT project-name TO USER RAM$*****:`role/aliyunlogdefaultrole`;
授予用户在项目空间名为project-name的CreateInstance(创建实例)权限。
project-name
为MaxCompute项目名称。GRANT DESCRIBE, ALTER, UPDATE ON TABLE table-name TO user RAM$****.aliyunid.com:`role/aliyunlogdefaultrole`;
授予用户查看、修改、更新目标MaxCompute表的权限。
table-name
为MaxCompute表名。说明该授权只针对指定的MaxCompute表,如果您希望目标用户可以操作当前MaxCompute项目下的所有表,请执行
GRANT admin to user RAM$****.aliyunid.com:`role/aliyunlogdefaultrole`;
命令完成授权。SHOW GRANTS FOR `RAM$****.aliyunid.com:role/aliyunlogdefaultrole`;
确认授权是否成功。
如果返回如下类似信息表示授权成功。
Authorization Type: ACL [user/RAM$****.aliyunid.com:role/aliyunlogdefaultrole] A projects/default_project_****: CreateInstance 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账户操作或者授权权限。更多信息,请参见出现操作用户无权限错误时,如何解决。
后续操作
完成授权后,您在创建MaxCompute投递任务(新版)时,在写MaxCompute授权中选中默认角色,即可授权MaxCompute投递任务(新版)扮演AliyunLogDefaultRole角色将数据投递到MaxCompute表中。具体操作,请参见创建MaxCompute投递任务(新版)。
跨账号投递
日志服务和MaxCompute属于不同的阿里云账号,例如日志服务属于账号A,MaxCompute属于账号B。则您需在两个账号下分别完成云资源访问授权,分别创建AliyunLogDefaultRole角色。创建后,还需进行如下配置。
修改账号B下的AliyunLogDefaultRole角色的信任策略。
使用账号B登录RAM 控制台。
在左侧导航栏中,选择
。在RAM角色列表中,单击AliyunLogDefaultRole。
在信任策略页签中,单击编辑信任策略。
将原有的信任策略替换为如下内容,然后单击保存信任策略。
在Service配置项中添加阿里云账号A的ID@log.aliyuncs.com和dataworks.aliyuncs.com。其中账号A对应的阿里云账号ID,需根据实际情况替换,您可以在账号中心查看阿里云账号ID。
该策略表示账号A有权限通过日志服务获取临时Token来操作账号B中的资源。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "账号A对应的阿里云账号ID@log.aliyuncs.com", "dataworks.aliyuncs.com", "log.aliyuncs.com" ] } } ], "Version": "1" }
添加账号B下的AliyunLogDefaultRole角色为工作空间成员。
您可以通过可视化界面或命令行进行RAM角色授权,即使用账号B登录DataWorks控制台,完成授权操作。具体操作,通过可视化界面完成授权或通过命令行完成授权。
后续操作
完成授权后,您在创建MaxCompute投递任务(新版)时,在写MaxCompute授权中选中自定义角色,然后输入账号B下的AliyunLogDefaultRole角色的ARN(例如acs:ram::11**13:role/aliyunlogdefaultrole),即可授权MaxCompute投递任务(新版)扮演账号B下的AliyunLogDefaultRole角色将数据投递到MaxCompute表中。如何获取ARN,请参见查看RAM角色。