您可以通过创建日志服务SLS触发器(以下简称SLS触发器)将日志服务SLS与函数计算连接起来,当有新日志产生时触发函数执行,对日志进行处理。本文以日志服务SLS调用函数计算,函数计算获取日志并打印为例,介绍如何在函数计算控制台上完成SLS触发器的配置,包括创建触发器、编写函数和测试函数。
示例场景
您可以配置一个SLS触发器,该触发器将定时获取更新的数据并触发函数执行,增量消费日志服务Logstore中的数据,在函数里完成自定义加工任务(例如,数据清洗和加工)以及将数据投递给第三方服务。本示例中只演示如何获取日志数据并打印。
说明 用于数据加工的函数可以是日志服务提供的模板,也可以是您的自定义函数。
前提条件
- 函数计算
- 日志服务SLS
说明 需要创建一个日志项目和两个日志库。一个日志库用于处理日志及数据源,另一个日志库用于存储函数计算产生的日志。
创建触发器
编写函数
完成日志触发器创建后,您可以开始编写函数代码。日志服务收集增量日志时触发该函数,函数计算获取对应日志,然后打印收集的日志。
在函数详情页面,单击函数代码页签,在代码编辑器中编写代码。
本文以Python函数代码为例。以下示例代码可以作为提取大部分逻辑日志的模板。其中
accessKeyId
和accessKey
可以填写在代码内,也可以从context
和creds
中获取。 # -*- coding: utf-8 -*-
import logging
import json
from aliyun.log import LogClient
from time import time
def logClient(endpoint, creds):
logger = logging.getLogger()
logger.info('creds info')
logger.info(creds.access_key_id)
logger.info(creds.access_key_secret)
logger.info(creds.security_token)
accessKeyId = 'your accessKeyId'
accessKey = 'your accessKeyId scr'
client = LogClient(endpoint, accessKeyId, accessKey)
return client
def handler(event, context):
logger = logging.getLogger()
logger.info('start deal SLS data')
logger.info(event.decode().encode())
info_arr = json.loads(event.decode())
fetchdata(info_arr['source'],context)
return 'hello world'
def fetchdata(event,context):
logger = logging.getLogger()
endpoint = event['endpoint']
creds = context.credentials
client = logClient(endpoint, creds)
if client == None :
logger.info("client create failed")
return False
project = event['projectName']
logstore = event['logstoreName']
start_cursor = event['beginCursor']
end_cursor = event['endCursor']
loggroup_count = 10
shard_id = event['shardId']
while True:
res = client.pull_logs(project, logstore, shard_id, start_cursor, loggroup_count, end_cursor)
res.log_print()
next_cursor = res.get_next_cursor()
if next_cursor == start_cursor :
break
start_cursor = next_cursor
#log_data = res.get_loggroup_json_list()
return True
测试函数
完成函数编写后,您需要调试函数以验证代码的正确性。在实际操作过程中当日志库中有新增日志进入时会自动触发函数的执行。
验证结果
在函数代码页签,您可以看到执行成功的指示。

更多信息
除了函数计算控制台,您还可通过以下方式配置触发器:
- 通过Serverless Devs工具配置触发器。更多操作,请参见Serverless Devs。
- 通过SDK配置触发器。更多操作,请参见SDK列表。
如需对创建的触发器进行修改或删除,具体操作,请参见触发器管理。