日志服务的数据加工功能,其运作机制其实并不复杂:首先从源LogStore拉取原始数据,经过一系列加工处理,最终将结果写入目标LogStore。整个过程类似于一条流水线,而起始和结束阶段都绕不开一个核心问题——即对LogStore的访问权限配置。
使用主账号AccessKey虽然最简便,只需勾选即可运行,无需额外配置。但从账号安全角度考量,这种做法风险较大,强烈推荐采用子账号进行细粒度授权。接下来我们将逐步解析,如何从零开始搭建这一权限体系。
首先,请登录RAM控制台,开始创建子账号并授权。
创建读取源LogStore的子账号
由源Project所属的主账号执行操作:

创建完成后,务必妥善保存子账号的AccessKey ID和Secret,后续配置中会用到。

设置源LogStore的读取权限
同样由源Project所属的主账号操作:

具体的授权策略如何配置?下面列举两个典型场景。
场景一:精确授权
假设源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-project-dev-a、log-project-dev-b、log-project-dev-c,对应的LogStore分别为app_a_log、app_b_log、app_c_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-dev-*/logstore/app_*_log",
"acs:log:*:*:project/log-project-dev-*/logstore/app_*_log/*"
],
"Effect": "Allow"
}
]
}
更多授权场景可参考官方文档。
将源读取权限绑定到子账号
由源Project所属的主账号操作:


创建写入目标LogStore的子账号
由目标Project所属的主账号操作,步骤与创建读取子账号完全相同。创建完成后同样需保存AccessKey ID/Secret。
配置目标LogStore的写入权限
由目标Project所属的主账号操作,方式与前面的读取权限配置类似,但操作列表不同。
场景一:精确授权
假设目标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"
}
]
}
场景二:模糊匹配授权
同样针对多套开发环境,目标Project为log-project-dev-a等,LogStore为app_a_log_output等,策略可使用通配符:
{
"Version": "1",
"Statement": [
{
"Action": ["log:Post*"],
"Resource": "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log_output",
"Effect": "Allow"
}
]
}
更多授权场景请参考官方文档。
将目标写入权限绑定到写入子账号
由目标Project所属的主账号操作,方式同步骤4。
在数据加工任务中使用子账号AccessKey

最后一步,由源Project所属账号登录日志服务控制台,在数据加工任务的配置界面中,将之前创建的读取子账号AccessKey ID/Secret填入上方输入框,写入子账号的填入下方输入框,配置完成。
进一步参考
日志服务最佳实践汇总(持续更新)
完整DSL语法介绍与参考PDF下载(持续更新)
数据加工指南
介绍:
- 功能概述
- 概念原理
快速开始:
- 快速开始(SLB日志加工实战)
- 控制台操作
- 源与目标访问秘钥配置
- 作业诊断指南
- 性能指南
- 成本优化指南
语法:
- DSL语法介绍
- 查询字符串语法
- JMES语法介绍
管理配置:
- 子账号授权配置
