首页 > 解决方案 > 如何将所有 cloudtrail 日志移动到一个集中位置

问题描述

我正在尝试将 CloudTrail 日志收集到我们的 SIEM 中。SIEM 供应商只能从单个文件夹收集来自 S3 的日志,但 Cloudtrail 每天都会创建一个文件夹。我需要创建一个 lambda 函数,用于查看何时将文件添加到这些子目录之一并将它们移动到同一位置:

我们现在拥有的示例:

Bucketname/CloudTrail/323232/ca-central/2019/06/02/files.json.gz
Bucketname/CloudTrail/323232/ca-central/2019/06/03/files.json.gz
Bucketname/CloudTrail/323232/ca-central/2019/06/04/files.json.gz

我们希望看到的示例:

Bucketname/CloudTrail/323232/ca-central/files1.json.gz
Bucketname/CloudTrail/323232/ca-central/files2.json.gz
Bucketname/CloudTrail/323232/ca-central/files3.json.gz

我曾尝试在网上寻找示例,但找不到任何匹配的内容。

标签: pythonamazon-s3aws-lambda

解决方案


鉴于 CloudTrail 发送的每个 CloudTrail 事件文件都包含时间戳和 UUID,因此不太可能发生碰撞。

话虽如此,如果您愿意将所有数据(不分组日期)复制到一个文件夹中(还考虑到 S3 存储桶实际上可以无限扩展),那么您可以考虑执行以下操作:

  1. (a) 在您的 CloudTrail 存储桶上设置 S3 对象级别通知,这将在 CloudTrail 发送的每个新文件上将一条消息放入 SQS 队列。
  2. (b) 或者,您可以在 CloudTrail Trail 中配置一个 SNS 主题,CloudTrail 将在每次 CloudTrail 交付文件时放置一条消息,然后将该 SNS 主题连接到 SQS 队列。
  3. 使用 Lambda 函数连接 SQS 队列。
  4. Lambda 函数将从 SQS 队列(将包含新的 S3 文件路径)中读取事件,并将该文件复制(或移动?)到新文件夹中。

推荐阅读