阿里云函数计算应用:将ActionTrail审计事件从OSS导入到SLS中

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: ActionTrail会将事件压缩之后保存到OSS中。用户使用和分析OSS中的文件比较麻烦。如果能讲审计事件写入到SLS,会给用户提供很大的便利。阿里云函数计算是实现这个迁移的好办法,成本低,见效快。本文将介绍如何通过函数计算将ActionTrail事件从OSS导入到SLS中。

ActionTrail会将事件压缩之后保存到OSS中。用户使用和分析OSS中的文件比较麻烦。如果能将审计事件写入到SLS,会给用户提供很大的便利。阿里云函数计算是实现这个迁移的好办法,成本低,见效快。本文将介绍如何通过函数计算将ActionTrail事件从OSS导入到SLS中。

image.png

创建服务

首先进入函数计算控制台创建服务。在高级配置中配置好SLS project,用于保存函数计算运行的信息,方便排查问题。函数计算会往里面写入函数运行的信息,用户也可以用过logger对象写入自定义的信息。

创建服务的过程中涉及到很多授权,需要根据提示授予权限。具体到这个例子,是要给OSS服务授权调用函数计算的触发器。给函数计算服务授权,读取OSS的数据,往SLS写入事件。

函数计算目前支持的Region不多,会限制目标OSS的区域。比如在华东2创建服务,就要求读的OSS要在华东2

image.png

image.png

创建触发器

ActionTrail通过OSS PutObject方法往OSS写入文件,因此触发函数选择PubObject。

image.png

创建函数

通过Python 2.7实现处理逻辑。在线编辑器还不错,不过没有智能提示功能。先获取ActionTrail的压缩文件,将其解压后,使用SLS客户端将其上传到指定的SLS Project中。需要将OSS client的endpoint和bucket name,SLS client的endpoint、log project、logstore替换成自己的。

# coding=utf-8

import time
from hashlib import md5
import zlib

import json
import logging
import oss2
from aliyun.log.logclient import LogClient
from aliyun.log.putlogsrequest import PutLogsRequest
from aliyun.log.logitem import LogItem

def handler(event, context):
    logger = logging.getLogger()
    
    endpoint = 'oss-cn-shanghai.aliyuncs.com'.format(context.region)
    creds = context.credentials
    auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
    
    sls_client = LogClient('cn-shanghai.log.aliyuncs.com', creds.access_key_id, creds.access_key_secret, securityToken=creds.security_token)

    for evt in json.loads(event)['events']:
      
      bucket_name = evt['oss']['bucket']['name']
      bucket = oss2.Bucket(auth, endpoint, bucket_name)
      object_name = evt['oss']['object']['key']
      r = bucket.get_object(object_name)
      zipData = r.read(409600) #ActionTrail一个文件压缩前不会超过8KB,所以超过8KB就OK。
      actionTrailEvents = zlib.decompress(zipData, zlib.MAX_WBITS|16)
      
      logitemList = []
      
      for actionTrailEvent in json.loads(actionTrailEvents):
    
        logItem = LogItem()
        event_time = time.mktime(time.strptime(actionTrailEvent['eventTime'], '%Y-%m-%dT%XZ'))
        logItem.set_time(event_time)
        #这里只配置了'eventName',可以增加更多需要单独展示或者检索的字段。
        logItem.set_contents([('eventName', actionTrailEvent['eventName']), ('event', json.dumps(actionTrailEvent))])
        logitemList.append(logItem)
        
      req = PutLogsRequest('actiontrail-events-from-oss-to-sls', 'actiontrail-events', 'ActionTrail', 'henshao', logitemList)
      res = sls_client.put_logs(req)
      logger.info(res.log_print())
      
    return 'OK'

开发调试

函数计算的调试非常方便。在触发事件中,选择自定义事件,拿一个真实的ActionTrail文件来做测试(需要替换JSON里面的oss.bucket.arn、oss.object.key,以及所有的阿里云id)。每次修改代码之后,点击保存并运行。函数运行的信息都会在Web页上打印出来。

image.png

验证结果

通过一个登录事件来验证函数计算的运行情况。这里有一点需要注意,SLS开启检索功能之前的日志在查询里面是不能展示的,可以去预览里面翻翻。

image.png

image.png

参考资料

实践中,我发现函数计算是可以使用阿里云Python SDK的,相关的Python代码直接帖进去都可以使用,所以函数计算可以实现非常复杂的功能。

  1. 操作事件(Event)结构定义
  2. aliyun-log-python-sdk
相关文章
|
4月前
|
SQL Java Serverless
实时计算 Flink版操作报错合集之在写入SLS(Serverless Log Service)时出现报错,该如何排查
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
1月前
|
SQL 存储 人工智能
阿里云日志服务的傻瓜式极易预测模型
预测服务有助于提前规划,减少资源消耗和成本。阿里云日志服务的AI预测服务简化了数学建模,仅需SQL操作即可预测未来指标,具备高准确性,并能处理远期预测。此外,通过ScheduledSQL功能,可将预测任务自动化,定时执行并保存结果。
63 3
|
5月前
|
弹性计算 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之集成sls时出现报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
3月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
1月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
2月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
150 9
|
2月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
192 3
|
4月前
|
监控 数据管理 关系型数据库
数据管理DMS使用问题之是否支持将操作日志导出至阿里云日志服务(SLS)
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
3月前
|
敏捷开发 前端开发 测试技术
阿里云云效产品使用合集之如何将云效构建执行过程中产生的日志通过邮件发送
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之appStack部署时没有日志是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

热门文章

最新文章

相关产品

  • 函数计算