从CloudTrail日志中检索RunInstances事件的用户名

时间:2016-08-24 07:18:16

标签: amazon-web-services amazon-s3 amazon-ec2 boto3 amazon-cloudtrail

我们在AWS中运行了大量EC2实例大约1年。现在我们正在尝试为未使用的实例执行清理活动,并基于我们已启动实例的用户名。

我尝试从S3 Bucket下载cloudtrail日志,并尝试过滤用户名和'RunInstances'事件,以便找到启动实例的用户以及实例详细信息。

以下是我用于将所有cloudtrail日志下载到单个文件夹中的脚本,解压缩它们并通过'RunInstances'事件过滤实例并提供实例计数。

我需要帮助从“RunInstances”事件中检索每个日志中的用户名并停止实例。

我的剧本:

- name: Run psql to pull in initial config data
  become_method: sudo
  become: yes
  become_user: postgres
  shell: psql -U postgres -w eclaim < /opt/eclaim_revamp/sql_scripts/{{ item }}.sql
  with_items:
    - initial_config
    - initial_sql_script
    - tmp_hrms

无论如何我可以在不下载zip文件的情况下直接从s3存储桶本身获取信息吗?因为这需要花费大量时间,因为我们有大约100万个日志文件。

我需要一种方法来解决任何编程语言或脚本。

感谢您的支持。

2 个答案:

答案 0 :(得分:1)

directly get info from s3 bucket itself你是什么意思? S3是存储资源而不是计算资源。您可以避免下载到磁盘文件。相反,您可以在内存中处理它而无需保存到文件但仍需下载它。

建议:

  • 不要全年下载所有地区的所有路径。这将需要一个漫长的时间
  • 一次处理一个地区的一个月数据。重复其他月份/地区
  • 使用Python / Boto3,它有许多方便的功能来处理跟踪日志并提取您想要的信息

我每天都这样做(仅限前一天的日志),但我无法提供代码。

答案 1 :(得分:0)

不是下载所有s3日志,而是查询它为什么不使用Athena!之类的东西。这将节省您的时间并大大减少您的工作量。 Cloudtrail确实提供了有关谁启动了实例及其sdk的足够信息。您可以使用boto3编写python脚本,还可以设置cron作业每天运行一次。