近日,Amazon Web Services(AWS)发布了AWS CloudTrail 处理库(CPL),这是一个“Java 客户端库,使开发人员可以更简便地构建应用程序,以一种具有容错能力和高扩展性的方式读取和处理CloudTrail 日志文件”。
AWS CloudTrail 记录了一个 AWS 账号所做的所有 API 调用,用于日志记录和审计场景,包括安全分析、更改跟踪、法规遵从性援助和运行故障排除,先前的报道对此有更详细的描述。CloudTrail 是在 re:Invent 2013 大会上推出的,经过 2014 年的扩展,已经支持所有 AWS域和大部分服务。
照例,AWS 提供了在自定义监控解决方案中集成CloudTrail 的 API 。不过,实现 CloudTrail 事件处理逻辑至少需要与 Amazon S3、Amazon SNS 和 CloudTrail 本身三种相关服务进行交互,同时还要考虑灵活性和容错能力,这是一项繁重的任务。
现在,这个问题已经由一个“新的 AWS SDK for Java 扩展”解决:
AWS CloudTrail 处理库,或者 CPL,减少了轮询 Amazon SQS 队列、读取和分析队列消息、下载 CloudTrail 日志文件及分析和序列化事件 [……] 所需要编写的代码。开发人员最少用 10 行代码就可以读取和处理 CloudTrail 日志文件。CPL 以一种灵活且具有容错能力的方式处理瞬态和持久故障 [……]。CPL 以易于扩展的方式构建,可以并行处理任意数量的日志文件。
最小限度的集成只需要实现一个接收CloudTrail 日志数据的EventProcessor 接口:
public class SampleEventsProcessor implements EventsProcessor { public void process(List<cloudtrailevent> events) { int i = 0; for (CloudTrailEvent event : events) { System.out.println(String.format("Process event %d : %s", i++, event.getEventData())); } } }</cloudtrailevent>
正如 Jason Fulghum 在 Java SDK 博客上的介绍性博文中所阐述的那样,事件可以在这个循环中直接过滤,而通过下面这些专用的接口可以实现更高级的应用场景:
- EventFilter——提供一个回调接口,确定是否处理日志记录
- EventProcessor——提供一个回调接口,传递需要处理的日志记录(如上所示)
- ExceptionHandler——提供一个回调接口,处理日志文件处理时的异常
- ProgressReporter——提供一个接口,自定义处理过程
- SourceFilter——提供一个回调函数,确定是否处理日志源
EventFilter 允许开发人员根据 CloudTrailEventData 中的粒度信息有选择地处理事件,比如AWS 域、源服务甚或IP 地址、用户身份,当然还可以是像“DeleteSecurityGroup”这样的事件名。CPL 提供了所有接口的示例实现,其中包括一个只提取EC2 删除API 调用的EventFilter:
public class SampleEventFilter implements EventFilter{ private static final String EC2_EVENTS = "ec2.amazonaws.com"; @Override public boolean filterEvent(CloudTrailEvent event) throws CallbackException { CloudTrailEventData eventData = event.getEventData(); String eventSource = eventData.getEventSource(); String eventName = eventData.getEventName(); return eventSource.equals(EC2_EVENTS) && eventName.startsWith("Delete"); } }
AWS CloudTrail 处理库源码可以从GitHub 上下载。 CloudTrail 文档包含一个如何使用CPL 的章节以及 CPL API 参考。开发人员可以从 CloudTrail问题跟踪和AWS CloudTrail 论坛获得技术支持。
查看英文原文:**** AWS Releases CloudTrail Processing Library
评论