是否有一种方法可以列出AWS中的所有资源?所有地区,所有资源。例如列出所有EC2实例,所有vpc, API网关中的所有API等等…我想列出我账户的所有资源,因为我现在很难找到我可以放弃的资源。


当前回答

使用PacBot (Policy as Code Bot)——一个开源项目,它是一个用于持续合规监控、合规报告和云安全自动化的平台。PacBot发现所有帐户和所有区域的所有资源,然后根据这些策略进行评估,以衡量策略的一致性。

Omni搜索功能也提供了搜索所有发现的资源的能力。您甚至可以通过PacBot终止/删除资源。

Omni搜索

带有结果过滤的搜索结果页

资产360 /资产详情页面

以下是PacBot的主要功能:

Continuous compliance assessment. Detailed compliance reporting. Auto-Fix for policy violations. Omni Search - Ability to search all discovered resources. Simplified policy violation tracking. Self-Service portal. Custom policies and custom auto-fix actions. Dynamic asset grouping to view compliance. Ability to create multiple compliance domains. Exception management. Email Digests. Supports multiple AWS accounts. Completely automated installer. Customizable dashboards. OAuth2 Support. Azure AD integration for login. Role-based access control. Asset 360 degree.

其他回答

您可以使用标签编辑器。

进入AWS控制台 在“TOP”导航窗格中,单击“资源组”下拉菜单 点击标签编辑器

在这里,我们可以选择要搜索的特定区域,也可以从下拉菜单中选择所有区域。然后我们可以选择我们想要搜索的实际资源,或者我们也可以单击单个资源。

编辑:这个答案是不赞成的。检查其他答案。

不, 没有办法一次性获得帐户内的所有资源。每个区域都是独立的,对于一些服务,比如IAM,区域的概念根本不存在。 尽管有可用的API调用来列出资源和服务。 例如: 要获取您的帐户所有可用区域的列表:

output, err := client.DescribeRegions(&ec2.DescribeRegionsInput{})

要获取IAM用户、角色或组的列表,您可以使用:

client.GetAccountAuthorizationDetails (&iam.GetAccountAuthorizationDetailsInput {})

你可以在下面找到更多关于API调用及其使用的细节: https://docs.aws.amazon.com/sdk-for-go/api/service/iam/

以上链接仅供IAM使用。类似地,您可以为所有其他资源和服务找到API。

试试这个

仅适用于ec2:

from skew import scan

    arn = scan('arn:aws:ec2:us-west-2:123456789012:instance/i-12345678')
    for resource in arn:
        print(resource.data)

所有资源:

arn = scan('arn:aws:*:*:<<youraccountId>>:instance*')
for resource in arn:
    print(resource.data)

参考资料:https://github.com/scopely-devops/skew

已经很晚了,但你应该看看这个。我知道不是CLI,但仍然值得用一些shell脚本来做你需要的事情:

https://pypi.org/project/aws-list-all/

它是一个python库,用它自己的话来说:

“项目描述 列出一个AWS帐户中的所有资源、所有区域和所有服务(*)。编写JSON文件以供进一步处理。

(*)不保证完整性。如果你担心成本,可以使用计费提醒。”

AWS计费管理控制台将为您提供每月到目前为止按服务支出的纲要。