MaxCompute投遞任務(新版)運行時,需要將讀取到的Logstore中數據投遞到MaxCompute的表中,您可以授權MaxCompute投遞任務(新版)扮演自定義RAM角色完成該操作。本文介紹如何對自定義RAM角色進行授權。
前提條件
如果您使用的是RAM用戶,請確保該用戶具備操作RAM角色授權的權限。
將您的MaxCompute項目創建為DataWorks的MaxCompute數據源。更多信息,請參見創建MaxCompute數據源。
同賬號投遞
授予RAM角色對MaxCompute的寫入權限后,MaxCompute投遞任務可以使用該角色將Logstore中的數據寫入到目標MaxCompute的表中。此處通過添加RAM角色為工作空間成員的方式完成授權。
操作步驟
創建RAM角色,例如
MaxComputeShipRole
。具體操作,請參見創建可信實體為阿里云服務的RAM角色。重要創建RAM角色時,必須選擇可信實體類型為阿里云服務,且必須選擇受信服務為日志服務。
請檢查角色的信任策略如下,
Service
內容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
修改RAM角色信任策略。
登錄RAM控制臺。
在左側導航欄中,選擇
。在RAM角色列表中,單擊目標RAM角色,例如
MaxComputeShipRole
。在信任策略頁簽下,單擊編輯信任策略。
將原有的信任策略替換為如下內容,然后單擊保存信任策略。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com", "dataworks.aliyuncs.com" ] } } ], "Version": "1" }
添加RAM角色為工作空間成員。
您可以通過可視化界面或命令行授予RAM角色寫MaxCompute權限。
通過可視化界面完成授權
登錄DataWorks控制臺。
在頁面左上角,選擇地域。
在左側導航欄中,單擊工作空間。在工作空間列表頁面,單擊目標工作空間對應的管理。
在工作空間頁面的空間成員頁簽下,單擊添加成員。
在添加成員對話框中,選中當前登錄賬號和目標RAM角色,完成添加。
此處需在批量設置角色中選中開發。更多信息,請參見授權給其他用戶。
授予RAM角色操作MaxCompute表的權限。
登錄MaxCompute控制臺,在左上角選擇地域。
選擇
,在項目管理頁面,單擊目標項目操作列的管理。在MaxCompute項目管理頁面,單擊角色權限。
如果出現如下報錯,您需要先在角色列表中單擊admin對應的成員管理,然后在成員管理對話框中,選中當前登錄賬號,根據頁面提示完成添加。
在角色列表中,單擊role_project_admin角色對應的成員管理。
在成員管理對話框中,選中當前登錄賬號和目標RAM角色賬號,如
MaxComputeShipRole
。完成添加。在角色列表中,單擊role_project_admin角色對應的編輯角色。
在編輯角色對話框的Table頁簽下,選擇目標MaxCompute表,選中Describe、Alter和Update。
重要上述授權只針對指定的MaxCompute表。如果您希望目標角色可以操作當前MaxCompute空間項目下所有的表,則您可以為當前登錄賬號和目標角色添加admin角色權限。即在角色列表中,單擊admin角色對應的成員管理,然后在成員管理對話框中,選中當前登錄賬號和目標角色,完成添加。
通過命令行完成授權
登錄DataWorks控制臺。
在頁面左上角,選擇地域。
在左側導航欄中,單擊工作空間列表。
在工作空間列表頁面,將鼠標懸停至目標工作空間對應的快速進入,然后單擊數據開發。
新建業務流程。
在數據開發頁面,選擇
。在新建業務流程對話框中,設置業務名稱,然后單擊新建。
新建節點。
在數據開發頁面,選擇
。在新建節點對話框中,設置節點名稱和路徑,然后單擊確認。
其中,路徑需設置為您在上一步中所創建的業務流程。
在已創建的節點編輯框中,執行如下命令,完成授權。
命令
說明
USE project-name;
指定MaxCompute項目,需與您在創建MaxCompute投遞任務(新版)時設置的MaxCompute項目保持一致。更多信息,請參見創建MaxCompute投遞任務(新版)。
ADD USER RAM$****.aliyunid.com:`role/maxcomputeshiprole`;
在MaxCompute項目空間中添加用戶。
****.aliyunid.com為MaxCompute項目所屬的阿里云賬號。您可以通過
list users;
命令查看對應的阿里云賬號。maxcomputeshiprole為自定義RAM角色的名稱,必須為小寫格式。
GRANT CreateInstance ON PROJECT project-name TO USER RAM$*****:`role/maxcomputeshiprole`;
授予用戶在項目空間名為project-name的CreateInstance(創建實例)權限。
project-name
為MaxCompute項目名稱。GRANT DESCRIBE, ALTER, UPDATE ON TABLE table-name to user RAM$****.aliyunid.com:`role/maxcomputeshiprole`;
授予用戶查看、修改、更新目標MaxCompute表的權限。
table-name
為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_****: 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授權為自定義角色,然后輸入自定義RAM角色的ARN(如acs:ram::10**12:role/maxcomputeshiprole
),即可授權MaxCompute投遞任務(新版)使用自定義RAM角色將數據投遞到MaxCompute表中。具體操作,請參見創建MaxCompute投遞任務(新版)。
跨賬號投遞
日志服務和MaxCompute屬于不同的阿里云賬號,例如日志服務屬于賬號A,MaxCompute屬于賬號B。則需授予賬號B下的RAM角色MaxComputeShipRole
寫MaxCompute的權限。授權完成后,MaxCompute投遞任務可以使用該RAM角色將Logstore中的數據寫入到目標MaxCompute表中。
操作步驟
修改賬號B下RAM角色的信任策略。
使用阿里云賬號B登錄RAM控制臺。
創建RAM角色,例如
MaxComputeShipRole
。具體操作,請參見創建可信實體為阿里云服務的RAM角色。重要創建RAM角色時,必須選擇可信實體類型為阿里云服務,且必須選擇受信服務為日志服務。
請檢查角色的信任策略如下,
Service
內容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
修改RAM角色信任策略
在左側導航欄中,選擇
。在RAM角色列表中,單擊RAM角色
MaxComputeShipRole
。在信任策略頁簽中,單擊編輯信任策略。在
Service
配置項中添加{阿里云賬號A的ID}@log.aliyuncs.com
和dataworks.aliyuncs.com
。其中{阿里云賬號A的ID}
,需根據實際情況替換,您可以在賬號中心查看阿里云賬號ID。說明該策略表示賬號A有權限通過日志服務獲取臨時Token來操作賬號B中的資源。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com", "dataworks.aliyuncs.com", "{阿里云賬號A的ID}@log.aliyuncs.com" ] } } ], "Version": "1" }
確認無誤后,單擊保存信任策略。
添加賬號B下的RAM角色
MaxComputeShipRole
為工作空間成員。您可以在賬號B下通過可視化界面或命令行進行RAM角色授權。具體操作,請參見通過可視化界面完成授權或通過命令行完成授權。
后續操作
完成授權后,您可以在創建MaxCompute投遞任務(新版)時,選擇寫MaxCompute授權為自定義角色,然后輸入賬號B下的自定義RAM角色的ARN(例如acs:ram::11**13:role/maxcomputeshiprole
),即可授權MaxCompute投遞任務(新版)使用賬號B下的自定義RAM角色將數據投遞到MaxCompute表中。具體操作,請參見創建MaxCompute投遞任務(新版)。