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

简介: 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
相关文章
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
机器学习/深度学习 人工智能 Serverless
吉利汽车携手阿里云函数计算,打造新一代 AI 座舱推理引擎
当前吉利汽车研究院人工智能团队承担了吉利汽车座舱 AI 智能化的方案建设,在和阿里云的合作中,基于星睿智算中心 2.0 的 23.5EFLOPS 强大算力,构建 AI 混合云架构,面向百万级用户的实时推理计算引入阿里云函数计算的 Serverless GPU 算力集群,共同为智能座舱的交互和娱乐功能提供大模型推理业务服务,涵盖的场景如针对模糊指令的复杂意图解析、文生图、情感 TTS 等。
|
消息中间件 运维 监控
爆款游戏背后:尚娱如何借助阿里云 Kafka Serverless 轻松驾驭“潮汐流量”?
阿里云 Kafka 不仅为尚娱提供了高可靠、低延迟的消息通道,更通过 Serverless 弹性架构实现了资源利用率和成本效益的双重优化,助力尚娱在快速迭代的游戏市场中实现敏捷运营、稳定交付与可持续增长。
643 90
|
人工智能 运维 安全
阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施
阿里云推出以函数计算为核心的AgentRun平台,通过创新体系解决开发、部署、运维难题,提供全面支持,已在多个真实业务场景验证,是AI原生时代重要基础设施。
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
712 1
|
人工智能 运维 安全
阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施
云原生应用平台 Serverless 计算负责人杨皓然在云栖大会发表主题演讲“Serverless Agent 基础设施:助力大规模 Agent 部署与运维”。本议题深入介绍了阿里云以函数计算为核心打造的 Agent 基础设施——AgentRun,阐述其如何通过创新的运行时、模型服务、网关及可观测体系,为企业构筑坚实、高效、安全的 Agent 时代基石。
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
1197 30
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
1733 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
1184 12
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
1340 31

热门文章

最新文章

相关产品

  • 函数计算