全部產品
Search
文件中心

Simple Log Service:通過預設角色寫資料到MaxCompute

更新時間:Jun 30, 2024

MaxCompute投遞任務(新版)運行時,需要將讀取到的Logstore資料投遞到MaxCompute表中,您可以授權MaxCompute投遞任務(新版)扮演預設角色完成該操作。

前提條件

如果您使用的是RAM使用者,請確保該使用者具備操作RAM角色授權的許可權。

同帳號投遞

如果您的Log Service和MaxCompute屬於同一個阿里雲帳號,則您需要單擊雲資源訪問授權,在該帳號下建立AliyunLogDefaultRole角色。建立後,還需添加AliyunLogDefaultRole角色為MaxCompute工作空間成員,具體操作如下:

您可以通過可視化介面或命令列進行RAM角色授權。

通過可視化介面完成授權

  1. 修改RAM角色信任策略。

    1. 登入RAM控制台

    2. 在左側導覽列中,選擇身份管理 > 角色

    3. 在RAM角色列表中,單擊AliyunLogDefaultRole角色。

    4. 信任策略頁簽下,單擊編輯信任策略

    5. 將原有的信任策略替換為如下內容,然後單擊儲存信任策略

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "log.aliyuncs.com",
                "dataworks.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
  2. 添加RAM角色為工作空間成員。

    1. 登入DataWorks控制台

    2. 在頁面左上方,選擇地區。

    3. 在左側導覽列中,單擊工作空間列表

    4. 工作空間列表頁面,單擊目標工作空間對應的管理

    5. 工作空間頁面的空間成員頁簽下,單擊新增成員image.png

    6. 新增成員對話方塊中,選中當前登入帳號和AliyunLogDefaultRole角色,根據頁面提示完成添加。

      此處需在大量設定角色中選中開發。更多資訊,請參見授權給其他使用者

  3. 授予AliyunLogDefaultRole角色操作MaxCompute表的許可權。

    1. 工作空間頁面,選擇計算引擎資訊 > MaxCompute > 進入MaxCompute管理主控台image.png

    2. 在MaxCompute專案管理頁面,單擊角色許可權image.png

      如果出現如下報錯,您需要先在角色列表中單擊admin對應的成員管理,然後在成員管理對話方塊中,選中當前登入帳號,根據頁面提示完成添加。image.png

    3. 在角色列表中,單擊role_project_admin角色對應的成員管理

    4. 成員管理對話方塊中,選中當前登入帳號和AliyunLogDefaultRole角色帳號,根據頁面提示完成添加。

    5. 在角色列表中,單擊role_project_admin角色對應的編輯角色

    6. 編輯角色對話方塊的Table頁簽下,選擇目標MaxCompute表,選中DescribeAlterUpdateimage.png

    重要

    上述授權只針對指定的MaxCompute表。如果您希望目標角色可以操作當前MaxCompute空間專案下所有的表,則您可以為當前登入帳號和AliyunLogDefaultRole角色帳號添加admin角色許可權。即在角色列表中,單擊admin角色對應的成員管理,然後在成員管理對話方塊中,選中當前登入帳號和AliyunLogDefaultRole角色帳號,根據頁面提示完成添加。

    完成上述操作後,您在建立MaxCompute投遞任務(新版)時,在寫MaxCompute授權中選中預設角色,即可授權MaxCompute投遞任務(新版)扮演AliyunLogDefaultRole角色將資料投遞到MaxCompute表中。具體操作,請參見建立MaxCompute投遞任務(新版)MaxCompute投遞授權

通過命令列完成授權

  1. 登入DataWorks控制台

  2. 在頁面左上方,選擇地區。

  3. 在左側導覽列中,單擊工作空間列表

  4. 工作空間列表頁面,將滑鼠移至上方至目標工作空間對應的快速進入然後單擊資料開發

  5. 建立商務程序。

    1. 資料開發頁面,選擇建立 > 建立商務程序

    2. 建立商務程序對話方塊中,設定業務名稱,然後單擊建立

  6. 建立節點。

    1. 資料開發頁面,選擇建立 > 建立節點 > MaxCompute > ODPS SQL

    2. 建立節點對話方塊中,設定節點名稱路徑,然後單擊確認

      其中,路徑需設定為您在步驟5中所建立的商務程序。

  7. 在已建立的節點編輯框中,執行如下命令,完成授權。

    MaxCompute授權

    命令

    說明

    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投遞授權

跨帳號投遞

如果您的Log Service和MaxCompute不屬於同一個阿里雲帳號,例如Log Service屬於帳號A,MaxCompute屬於帳號B,則您需在兩個帳號下分別單擊雲資源訪問授權,分別建立AliyunLogDefaultRole角色。建立後,還需進行如下配置。

  1. 修改帳號B下的AliyunLogDefaultRole角色的信任策略。

    1. 使用帳號B登入RAM 控制台

    2. 在左側導覽列中,選擇身份管理 > 角色

    3. 在RAM角色列表中,單擊AliyunLogDefaultRole

    4. 信任策略頁簽中,單擊編輯信任策略

    5. 將原有的信任策略替換為如下內容,然後單擊儲存信任策略

      Service配置項中添加阿里雲帳號A的ID@log.aliyuncs.comdataworks.aliyuncs.com。其中阿里雲帳號A的ID,需根據實際情況替換,您可以在帳號中心查看阿里雲帳號ID。

      該策略表示帳號A有許可權通過Log Service擷取臨時Token來操作帳號B中的資源。

      {
        "Statement": [
         {
           "Action": "sts:AssumeRole",
           "Effect": "Allow",
           "Principal": {
             "Service": [
               "帳號A對應的阿里雲帳號ID@log.aliyuncs.com",
               "dataworks.aliyuncs.com",
               "log.aliyuncs.com"
             ]
           }
         }
        ],
        "Version": "1"
      }
  2. 添加帳號B下的AliyunLogDefaultRole角色為工作空間成員。

    您可以通過可視化介面或命令列進行RAM角色授權,即使用帳號B登入DataWorks控制台,完成授權操作。具體操作,通過可視化介面完成授權通過命令列完成授權

完成上述操作後,您在建立MaxCompute投遞任務(新版)時,在寫MaxCompute授權中選中自訂角色,然後輸入帳號B下的AliyunLogDefaultRole角色的ARN(例如acs:ram::11**13:role/aliyunlogdefaultrole),即可授權MaxCompute投遞任務(新版)扮演帳號B下的AliyunLogDefaultRole角色將資料投遞到MaxCompute表中。如何擷取ARN,請參見查看RAM角色。MaxCompute授權