MaxCompute投遞任務(新版)運行時,需要將讀取到的Logstore中資料投遞到MaxCompute的表中,您可以授權MaxCompute投遞任務(新版)扮演自訂RAM角色完成該操作。本文介紹如何對自訂RAM角色進行授權。
前提條件
已建立RAM角色(例如MaxComputeShipRole)。具體操作,請參見建立可信實體為阿里雲服務的RAM角色。
重要建立RAM角色時,必須選擇可信實體類型為阿里雲服務,且必須選擇受信服務為Log Service。
請檢查角色的信任策略如下,
Service
內容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
如果您使用的是RAM使用者,請確保該使用者具備操作RAM角色授權的許可權。
同帳號投遞
授予RAM角色對MaxCompute的寫入許可權後,MaxCompute投遞任務可以使用該角色將Logstore中的資料寫入到目標MaxCompute的表中。此處通過添加RAM角色為工作空間成員的方式完成授權。
您可以通過可視化介面或命令列進行RAM角色授權。
通過可視化介面完成授權
修改RAM角色信任策略。
登入RAM控制台。
在左側導覽列中,選擇 。
在RAM角色列表中,單擊目標RAM角色。
在信任策略頁簽下,單擊編輯信任策略。
將原有的信任策略替換為如下內容,然後單擊儲存信任策略。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com", "dataworks.aliyuncs.com" ] } } ], "Version": "1" }
添加RAM角色為工作空間成員。
登入DataWorks控制台。
在頁面左上方,選擇地區。
在左側導覽列中,單擊工作空間。在工作空間列表頁面,單擊目標工作空間對應的管理。
在工作空間頁面的空間成員頁簽下,單擊新增成員。
在新增成員對話方塊中,選中當前登入帳號和目標RAM角色,完成添加。
此處需在大量設定角色中選中開發。更多資訊,請參見授權給其他使用者。
授予RAM角色操作MaxCompute表的許可權。
在工作空間頁面,選擇
。在MaxCompute專案管理頁面,單擊角色許可權。如果出現如下報錯,您需要先在角色列表中單擊admin對應的成員管理,然後在成員管理對話方塊中,選中當前登入帳號,完成添加。
在角色列表中,單擊role_project_admin角色對應的成員管理。
在成員管理對話方塊中,選中當前登入帳號和目標RAM角色帳號,完成添加。
在角色列表中,單擊role_project_admin角色對應的成員管理。
在編輯角色對話方塊的Table頁簽下,選擇目標MaxCompute表,選中Describe、Alter和Update。
上述授權只針對指定的MaxCompute表。如果您希望目標角色可以操作當前MaxCompute空間專案下所有的表,則您可以為當前登入帳號和目標角色添加admin角色許可權。即在角色列表中,單擊admin角色對應的成員管理,然後在成員管理對話方塊中,選中當前登入帳號和目標角色,完成添加。
完成上述操作後,您在建立MaxCompute投遞任務(新版)時,在寫MaxCompute授權中選中自訂角色,然後輸入自訂RAM角色的ARN(例如acs:ram::10**12:role/maxcomputeshiprole),即可授權MaxCompute投遞任務(新版)使用自訂RAM角色將資料投遞到MaxCompute表中。如何擷取ARN,請參見查看RAM角色。
通過命令列完成授權
登入DataWorks控制台。
在頁面左上方,選擇地區。
在左側導覽列中,單擊工作空間。在工作空間列表頁面,將滑鼠移至上方至目標工作空間對應的快速進入,然後單擊資料開發。
建立商務程序。
在資料開發頁面,選擇
。在建立商務程序對話方塊中,設定業務名稱,然後單擊建立。
建立節點。
在資料開發頁面,選擇
。在建立節點對話方塊中,設定節點名稱和路徑,然後單擊確認。
其中,路徑需配置為您在步驟5中所建立的商務程序。
在已建立的節點編輯框中,執行如下命令,完成授權。
命令
說明
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表中。如何擷取ARN,請參見查看RAM角色。
跨帳號投遞
如果您的Log Service和MaxCompute不屬於同一個阿里雲帳號,例如Log Service屬於帳號A,MaxCompute屬於帳號B,則需授予帳號B下的RAM角色b寫MaxCompute的許可權。授權完成後,MaxCompute投遞任務可以使用該RAM角色將Logstore中的資料寫入到目標MaxCompute表中。
修改帳號B下RAM角色b的信任策略。
使用帳號B登入RAM控制台。
在左側導覽列中,選擇 。
在RAM角色列表中,單擊RAM角色b。
在信任策略頁簽中,單擊編輯信任策略。
修改信任策略,然後單擊儲存信任策略。
在Service配置項中添加阿里雲帳號A的ID@log.aliyuncs.com和dataworks.aliyuncs.com。其中阿里雲帳號A的ID,需根據實際情況替換,您可以在帳號中心查看阿里雲帳號ID。
該策略表示帳號A有許可權通過Log Service擷取臨時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角色b為工作空間成員。
您可以通過可視化介面或命令列進行RAM角色授權,即使用帳號B登入MaxCompute控制台,完成授權操作。具體操作,請參見通過可視化介面完成授權或通過命令列完成授權。
完成上述操作後,您在建立MaxCompute投遞任務(新版)時,在寫MaxCompute授權中選中自訂角色,然後輸入帳號B下的自訂RAM角色的ARN(例如acs:ram::11**13:role/maxcomputeshiprole),即可授權MaxCompute投遞任務(新版)使用帳號B下的自訂RAM角色將資料投遞到MaxCompute表中。如何擷取ARN,請參見查看RAM角色。