开发人员体验

AWSETS:AWS资源列表很容易

宣布AWSETS,一个新的开源实用程序,用于爬行AWS帐户并导出其所有资源以进行进一步分析。
杰夫卡特雷克10.
杰夫卡特 | 03年9月20日
3分钟阅读

今天,Trek10正在释放Awsets.是一个新的开源实用程序,用于爬行AWS帐户并导出所有资源以进行进一步分析。

问题

每天,TREK10接口跨多个客户端的众多环境。这在没有已知解决方案的情况下呈现出独特的问题,这导致我们建立自己的。一个这样的例子是awsume..

在这种情况下,Trek10经常被拉入现有的AWS帐户,缺乏文档,不要练习正确的标记,不要将基础架构用作代码,或者只包含这么多的资源,难以理解我们工作的内容和。不幸的是,没有一个AWS呼叫或服务,可以提供对帐户中所有内容的完整评估,以便我们可以在一起开始拼接到正在发生的事情。

现有方法

当我们开始寻找解决方案时,我们遇到了许多代表到解决这种需求的工具。它们在资源覆盖范围,方法和贡献者活动中大大变化。虽然在这个空间中存在一些有用的实现,但我们无法识别任何符合我们瞄准的目标的时间,而最接近的目标也不容易扩展。一些工具停止支持几十个资源。其他人采用自动化方法来调用来自SDK的功能,并且在必要时难以覆盖。最重要的是,它们都没有包括最重要的方面之一,这是所有资源彼此相关的。

新解决方案

在现有解决方案缩短后,我们决定探索实施新事物所需的内容。我们已经从我们的研究中学到了很多东西,也从我们在AWS生态系统中工作了这么久的痛苦点。我们想要完成的一些目标包括:

  • 没有做太多 - 它应该主要关注查询数据
  • 提供彻底的AWS资源覆盖
  • 建立资源之间的关系
  • 易于使用 - 无复杂的安装,在所有平台上都提供
  • 正常化数据进行进一步处理 - 提取像帐户,区域,ID,类型,标签,与顶级对象的关系

这项工作的结果是AWSETS,一个CLI工具写入。这GitHub页面包括安装和用法的完整自述文件,但少灯包括:

  • 对200多个AWS资源的查询和关系建设
  • 能够同时查询多个区域
  • 能够选择性地包括或排除AWS资源类型
  • 在ReadOnly角色中的函数

输出数据是JSON数组,每个对象采用以下格式:

{
    "Account": "123456789",              // account resource is in
    "Region": "us-east-1",               // region resource is in
    "Id": "12345",                       // resource id
    "Version": "",                       // resource version
    "Type": "ec2/instance",              // resource type
    "Name": "test-instance",             // resource name
    "Attributes": {},                    // full dump of resource attributes
    "Tags": {},                          // normalized tags for resource
    "Relations": [                       // array of the identifiers of related resources
        {
        "Account": "123456789",
        "Region": "us-east-1",
        "Id": "vpc-123abc123",
        "Version": "",
        "Type": "ec2/vpc"
        }
    ]
}

这种设计的目的是使其易于使用专业的JSON处理工具,如JQ.或者jmespath..

AWSET还包括一个基本点文件生成器,但它最终可能会分开,因为它在复杂性增加时。在关系中引用但不存在的资源显示为红色,可以轻松找到孤立资源。例如,此图像显示创建的网络堆栈以支持Redshift测试。删除了Redshift集群(昂贵的部分),但支持基础设施不是。我们还可以看到这些支持资源不是由其他东西使用的。

每个区域都以自己的子图呈现,使得易于获得正在使用哪个区域的快速视觉。在此图像中,黄色的项目是没有已知关系的资源,通常是默认值,例如默认角色,RDS参数组等。

下一步

虽然这个初始版本非常强大,但有很多工作要做,包括:

  • 支持更多AWS资源和关系 - 200+是一个很好的开始,但还有更多的时间
  • 除了支持更多资源外,现有资源可能有一些差距。例如,某些资源需要辅助调用来获取标记
  • 改进关系建设 - 当DDB表通过通过环境变量时,AWSET应该能够将DynamoDB表与Lambda函数匹配
  • 为数据构建其他后处理器。一些想法包括:
    • IAC评分卡 - 找到由IAC管理的资源
    • 自动群集相关资源以修复标记
    • 考虑每日或每周账户的快照
    • “SMART”资源清理 - 删除目标资源和仅使用的任何相关资源

入门

如前所述,你可以前往在GitHub上的项目有关安装和使用AWSET的信息。尝试介绍您遇到的任何问题或您需要支持的其他资源的问题或PRS。在Trek10,AWSETS被用作基本实用程序,用于推动多个内部工具 - 通过开放采购,我们很高兴看到社区可以提出的内容!

作者