概述
SLS【數據加工】功能已經廣泛用於數據的內容規整、信息富化、分發和彙總、索引重建等業務場景。因為其免運維、易擴展的特性,使其成為目前 SLS 上數據處理的首選。數據加工原理如下圖:

當用戶配置好數據加工任務以後,數據加工功能通過如下三個步驟完成對日誌數據的加工處理:
- 使用協同消費組對源 Logstore A 的日誌數據進行讀取消費。
- 根據用戶配置的加工規則,對讀取的每一條日誌進行加工處理。
- 將加工後的日誌數據寫入指定的目標 Logstore B 中。
以上步驟1和3中,涉及到讀/寫用戶數據,所以,為了使用數據加工功能做數據處理,用戶需要給數據加工功能做如下授權:
- 授權數據加工對您選擇的源 Logstore A 的日誌數據進行讀取消費
- 授權日誌服務將加工結果寫入您配置的(多個)目標 Logstore B
您可以通過如下三種方式給數據加工授權,詳細的配置流程請參考每種授權方式的文檔:
- 默認角色授權
- 自定義角色授權
- 密鑰授權
三種授權方式的特點對比:
| 授權方式 | 操作便捷 | 安全性等級 | 精確授權 | 寫入跨賬號目標 |
|---|---|---|---|---|
| 默認角色授權 | 非常便捷 | 非常安全 | 不支持 | 不支持 |
| 自定義角色授權 | 一般 | 非常安全 | 支持 | 支持 |
| 密鑰授權 | 一般 | 用戶需要保證 AK 不洩漏 | 支持 | 支持 |
默認角色授權
您可以授予日誌服務使用阿里雲系統角色 AliyunLogETLRole 來讀取源 Logstore 中的數據以及將數據加工結果寫入目標 Logstore。操作步驟如下:
- 在數據加工頁面,單擊 高級。
- 單擊 預覽數據。
- 在 添加預覽配置 頁面,單擊 默認角色 下的 授權系統角色AliyunLogETLRole。

- 在 雲資源訪問授權 頁面,單擊 同意授權。
該操作僅在首次配置時需要。
如果您使用的是RAM用戶,需要由阿里雲主賬號進行授權。

自定義角色授權
源 Logstore 訪問授權
- 使用主賬號登錄RAM控制檯。
-
創建具備源Logstore讀取權限的策略。
- 在左側導航欄中,單擊權限管理 > 權限策略管理。
- 單擊新建權限策略。
- 在新建自定義權限策略頁面中,配置如下參數,並單擊確定
配置模式選擇“ 腳本配置”。例如,源Project名稱為log-project-prod,源Logstore名稱為access_log。在實際場景中,請根據實際情況替換。策略內容如下:
{
"Version": "1",
"Statement": [
{
"Action": [
"log:ListShards",
"log:GetCursorOrData",
"log:GetConsumerGroupCheckPoint",
"log:UpdateConsumerGroup",
"log:ConsumerGroupHeartBeat",
"log:ConsumerGroupUpdateCheckPoint",
"log:ListConsumerGroup",
"log:CreateConsumerGroup"
],
"Resource": [
"acs:log:*:*:project/log-project-prod/logstore/access_log",
"acs:log:*:*:project/log-project-prod/logstore/access_log/*"
],
"Effect": "Allow"
}
]
}
| 參數 | 說明 |
|---|---|
| 策略名稱 | 配置策略名稱,本文以log-etl-source-reader-1-policy為例。 |
| 配置模式 | 選擇腳本配置。 |
| 策略內容 | column2 |
- 創建RAM角色,詳情請參見創建RAM角色。
-
授予RAM角色讀取源Logstore數據的權限策略。
- 在RAM角色管理頁面,找到目標RAM角色,單擊添加權限。
- 選擇自定義權限策略,並選中步驟2中創建的權限策略(本文以log-etl-source-reader-1-policy為例。),單擊確定。
- 確認授權結果,單擊完成。
- 獲取RAM角色標識(ARN)。在該角色的基本信息中查看,例如acs:ram::13234:role/logrole。
目標 Logstore 訪問授權
- 使用主賬號登錄RAM控制檯。
-
創建具備讀寫目標Logstore權限的策略。
- 在左側導航欄中,單擊權限管理 > 權限策略管理。
- 單擊新建權限策略。
- 在新建自定義權限策略頁面中,配置如下參數,並單擊確定。
配置模式選擇“ 腳本配置”。例如,目標Project名稱為log-project-prod,目標Logstore名稱為access_log_output。在實際場景中,請根據實際情況替換。
{
"Version": "1",
"Statement": [
{
"Action": [
"log:Post*"
],
"Resource": "acs:log:*:*:project/log-project-prod/logstore/access_log_output",
"Effect": "Allow"
}
]
}
- 創建RAM角色,詳情請參見創建RAM角色。
-
授予RAM角色讀寫目標Logstore的權限策略。
- 在RAM角色管理頁面,找到目標RAM角色,單擊添加權限。
- 選擇自定義權限策略,並選中步驟2中創建的權限策略(本文以log-etl-source-reader-1-policy為例。),單擊確定。
- 確認授權結果,單擊完成。
- 獲取RAM角色標識(ARN)。在該角色的基本信息中查看,例如acs:ram::13234:role/logrole。
寫入跨賬號目標Logstore授權
如果源Logstore和目標Logstore不在同一個阿里雲賬號時,需完成RAM跨賬號授權才能進行加工操作,例如將賬號A下的源Logstore中的數據加工後保存至賬號B下的目標Logstore中,您可以按照以下步驟進行授權。
- 賬號B已完成目標Logstore訪問授權中的配置。
- 使用賬號B登錄RAM 控制檯。
- 在左側導航欄中,單擊RAM角色管理。
- 在RAM角色列表中,單擊目標Logstore所屬的RAM角色。
- 在信任策略管理頁籤中,單擊修改信任策略。
- 修改信任策略。 在Service配置項中添加源Logstore所屬賬號A的主賬號[email protected],其中請根據實際情況替換源Logstore所屬賬號A的主賬號ID,您可以在賬號管理 > 安全設置中查看主賬號ID。該策略表示賬號A有權限通過日誌服務獲取臨時Token來操作賬號B的資源。
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"<源Logstore所屬賬號A的主賬號ID>@log.aliyuncs.com"
]
}
}
],
"Version": "1"
}
- 獲取RAM角色標識(ARN)。在該角色的基本信息中查看,例如acs:ram::13234:role/logrole。
密鑰授權
配置源Logstore訪問密鑰
- 使用主賬號登錄RAM控制檯。
- 創建RAM用戶,詳情請參見創建RAM用戶。在創建RAM用戶時,訪問方式請選擇為編程訪問,並保存AccessKey信息。
RAM用戶最多可以創建2個AccessKey。
RAM用戶創建AccessKey後,無法再通過控制檯查看AccessKeySecret,請您妥善保存AccessKeySecret,謹防洩露。
-
創建從源Logstore讀取數據的權限策略。
- 在左側導航欄中,單擊權限管理 > 權限策略管理。
- 單擊新建權限策略。
- 在新建自定義權限策略頁面中,配置如下參數,並單擊確定。
配置模式選擇“ 腳本配置”。例如,源Project名稱為log-project-prod,源Logstore名稱為access_log。在實際場景中,請根據實際情況替換。策略內容如下:
{
"Version": "1",
"Statement": [
{
"Action": [
"log:ListShards",
"log:GetCursorOrData",
"log:GetConsumerGroupCheckPoint",
"log:UpdateConsumerGroup",
"log:ConsumerGroupHeartBeat",
"log:ConsumerGroupUpdateCheckPoint",
"log:ListConsumerGroup",
"log:CreateConsumerGroup"
],
"Resource": [
"acs:log:*:*:project/log-project-prod/logstore/access_log",
"acs:log:*:*:project/log-project-prod/logstore/access_log/*"
],
"Effect": "Allow"
}
]
}
配置目標Logstore訪問密鑰
- 使用主賬號登錄RAM控制檯。
- 創建RAM用戶,詳情請參見創建RAM用戶。在創建RAM用戶時,訪問方式請選擇為編程訪問,並保存AccessKey信息。
RAM用戶最多可以創建2個AccessKey。
RAM用戶創建AccessKey後,無法再通過控制檯查看AccessKeySecret,請您妥善保存AccessKeySecret,謹防洩露。
-
創建將加工數據寫入目標Logstore的權限策略。
- 在左側導航欄中,單擊權限管理 > 權限策略管理。
- 單擊新建權限策略。
- 在新建自定義權限策略頁面中,配置如下參數,並單擊確定。
配置模式選擇“ 腳本配置”。例如,目標Project名稱為log-project-prod,目標Logstore名稱為access_log_output。在實際場景中,請根據實際情況替換。
{
"Version": "1",
"Statement": [
{
"Action": [
"log:Post*"
],
"Resource": "acs:log:*:*:project/log-project-prod/logstore/access_log_output",
"Effect": "Allow"
}
]
}
-
為RAM用戶授予寫入Logstore的權限策略。
- 在左側導航欄中,單擊人員管理 > 用戶。
- 找到目標RAM用戶,單擊添加權限。
- 選擇自定義權限策略,並選中步驟3中創建的權限策略(本文以log-etl-target-writer-1-policy為例。),單擊確定。
後記
以上就是使用 SLS【數據加工】功能時,需要為數據加工授權的詳細步驟。如果您在使用 SLS 過程中有任何問題,請加入我們釘釘服務群,也歡迎關注 SLS 的微信技術公眾號和B站視頻號。
