You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将S3 Bucket中文件转换为CSV/JSON并导入Azure Sentinel

S3文档转CSV/JSON适配Azure Sentinel的实操方案

一、自动搞定带task-id的路径匹配

不用手动写路径检索逻辑,直接在Lambda的触发配置里做:

  • 给Lambda加S3触发规则,用通配符匹配路径,比如s3://你的桶名/*/export-docs/*.doc(根据实际文档后缀调整),不管中间的task-id是什么,只要符合前缀+文档后缀的结构,新文件生成就自动触发Lambda。
  • 触发事件选s3:ObjectCreated:*,彻底省掉轮询SNS的步骤,文件一出来就处理。

二、Lambda里的转换代码示例

用Python写最方便,直接调用对应文档处理库:

import boto3
from docx import Document
import csv

s3 = boto3.client('s3')

def lambda_handler(event, context):
    # 从触发事件里直接拿文件信息,不用自己找路径
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    
    # 下载到Lambda临时目录
    local_file = f'/tmp/{key.split("/")[-1]}'
    s3.download_file(bucket, key, local_file)
    
    # 读取docx表格转CSV(其他格式换对应库,比如pdfplumber处理PDF)
    doc = Document(local_file)
    target_table = doc.tables[0] # 假设第一个表格是要导出的数据
    csv_data = []
    for row in target_table.rows:
        csv_data.append([cell.text.strip() for cell in row.cells])
    
    # 生成目标文件路径,保留原task-id目录方便溯源
    target_key = key.replace('.docx', '.csv')
    output_file = '/tmp/output.csv'
    with open(output_file, 'w', newline='') as f:
        writer = csv.writer(f)
        writer.writerows(csv_data)
    
    # 上传回S3
    s3.upload_file(output_file, bucket, target_key)
    
    # 可选:删除原文档或者移到归档目录,避免重复触发
    # s3.delete_object(Bucket=bucket, Key=key)

三、批量处理历史文件

如果有一堆旧文档要转,写个一次性脚本跑:

import boto3
from docx import Document
import csv

s3 = boto3.client('s3')
bucket_name = '你的桶名'
prefix = 'export-tasks/' # 你的文档根路径

def convert_file(key):
    # 复用上面的转换逻辑
    local_file = f'/tmp/{key.split("/")[-1]}'
    s3.download_file(bucket_name, key, local_file)
    # ... 省略转换和上传代码 ...

# 遍历所有符合条件的文件
response = s3.list_objects_v2(Bucket=bucket_name, Prefix=prefix)
for obj in response['Contents']:
    if obj['Key'].endswith('.docx'): # 过滤文档后缀
        convert_file(obj['Key'])

把这个代码打包成Lambda层或者直接运行,一次性处理所有历史文件。

四、Azure Sentinel采集配置

  • 把转换后的CSV/JSON所在的S3路径配置到Sentinel的S3数据源,给Sentinel授权访问该Bucket的权限。
  • 要实时采集的话,要么让Sentinel自动扫描S3目录,要么在Lambda转换完成后发消息到SNS,让Sentinel订阅这个主题触发采集。

内容的提问来源于stack exchange,提问作者LinuBajy007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:18:21