本文为您介绍权限问题导致任务不能正常执行的报错信息及解决方法。
Project Owner常见赋权脚本如下:
-- 方法1: 直接赋权
use project_xxx; --使用某project,开发环境带_dev后缀
grant CreateResource to user_xxx@aliyun.com; --阿里云子账号
-- 方法2:创建角色赋权
use project_xxx;
create role worker; --创建角色
grant worker to user_xxx@aliyun.com; --角色指派
grant CreateInstance, CreateResource, CreateFunction, CreateTable, List ON PROJECT project_xxx TO ROLE worker; --对角色授权
-- 以下是一些场景的examples
-- volume授权
use project_xxx;
grant CreateVolume on project project_xxx to user user_xxx@aliyun.com;
grant Read on volume volume_xxx to user user_xxx@aliyun.com;
grant Write on volume volume_xxx to user user_xxx@aliyun.com;
-- list权限
use project_xxx;
show grants for user_xxx@aliyun.com;
MaxCompute Volume未授权
- 报错信息
[403] com.aliyun.odps.OdpsException: ODPS-0420095: Access Denied - Volumes is not allowed in project config. at com.aliyun.odps.rest.RestClient.handleErrorResponse(RestClient.java:382) at com.aliyun.odps.rest.RestClient.request(RestClient.java:321) at com.aliyun.odps.rest.RestClient.request(RestClient.java:275) at com.aliyun.odps.Volume.reload(Volume.java:109) at com.aliyun.odps.Volumes.exists(Volumes.java:117) at com.aliyun.odps.Volumes.exists(Volumes.java:100)
- 解决方法
MaxCompute表无Download权限
- 报错信息
- 解决方法在DataWorks的数据地图中搜索对应的MaxCompute表,并申请开通其Download权限,运行时则可以下载相应的数据。
MaxCompute表无Describe、Select等权限
- 报错信息
- 解决方法申请对应Project下的表权限。
场景 解决方法 跨Project 对于跨Project表,需要联系表Owner申请对应权限,可以在DataWorks的数据地图中去搜索对应表并申请权限。 同Project - 当前Project下,如果表权限是用户自己创建的,一般自动获取权限。
- 当前Project下,如果表权限是其他用户创建的,可以参考跨Project表的方法申请权限。
- 特殊场景(例如
project is protected
),可以联系Project Owner对相关权限赋权,赋权脚本请参考上述常见赋权脚本。