有没有办法列出 AWS 中的所有资源

Posted

技术标签:

【中文标题】有没有办法列出 AWS 中的所有资源【英文标题】:Is there a way to list all resources in AWS 【发布时间】:2017-11-07 13:51:15 【问题描述】:

?对于所有区域,所有资源.. 例如列出所有 EC2 实例、所有 VPC、API 网关中的所有 API 等......我想列出我账户的所有资源,因为我很难找到我可以找到哪些资源现在放弃吧。

【问题讨论】:

看看我对这个问题的回答 - ***.com/questions/43984337/multiple-aws-reigon/… 应该足以让你开始。 可能有用:aws.amazon.com/config、github.com/lebinh/aq、github.com/scopely-devops/skew。 您可以为所有区域和您需要查看的所有服务创建资源组。资源组将在一个地方向您展示所有这些资源。您也可以为此使用 aws cli。 aws.amazon.com/blogs/aws/resource-groups-and-tagging 是的。使用标签编辑器。将“区域”设置为“所有区域”,将“资源类型”设置为“所有支持的资源类型”,然后点击“搜索资源”。 【参考方案1】:

是的。使用Tag Editor。

将“区域”设置为“所有区域”,将“资源类型”设置为“所有支持的资源类型”,然后点击“搜索资源”。

【讨论】:

要使用标签编辑器列出所有资源,您手动选择列出的所有区域(截至今天共有 15 个区域),然后选择“所有资源类型”,并且不指定标签。然后点击“查找资源”,这将显示在您的帐户中创建的所有资源。 注意这只会查询支持的资源类型docs.aws.amazon.com/ARG/latest/userguide/… 这是一个天才的想法,但不幸的是,截至 2018 年 9 月,许多重要的资源类型尚未得到支持。我没有找到我的 DynamoDB 表、API Gateway、Lambda、IAM 角色等。 .. 不幸的是,“标签编辑器”链接现在是 404。 旧的标签编辑器和上面的链接都不见了。您可以使用新的标签编辑器,但我没有看到保存多区域结果的方法。请参阅 console.aws.amazon.com/resource-groups 和docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html的文档【参考方案2】:

您可以使用Tag Editor

    转到 AWS 控制台 在顶部导航窗格中,单击Resource Groups下拉菜单 点击Tag Editor

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

【讨论】:

这是正确答案。非常适合我,谢谢! 我同意这是正确的答案,它有效并且很容易理解 这个答案是正确的。我只想补充一点,您也可以使用 aws cli 命令get-resources 来达到相同的效果。 另一个缺点:标签编辑器(以及 AWS Config)无法按标签搜索 IAM 资源。 Read more here 如何将资源组添加到导航栏?【参考方案3】:

我认为这可能会有所帮助!在这里,您需要输入区域名称,并且您必须在尝试此之前configure AWS CLI。

aws resourcegroupstaggingapi get-resources --region region_name

它将按以下格式列出该区域内的所有资源。

- ResourceARN: arn:aws:cloudformation:eu-west-1:5524534535:stack/auction-services-dev/*******************************
  Tags:
  - Key: STAGE
    Value: dev
- ResourceARN: arn:aws:cloudformation:eu-west-1:********************
Tags:
-- More  --

【讨论】:

这比对每个服务都使用 API 更好,因为它显着减少了 API 调用的数量,降低了限流的风险。对于资源组服务未涵盖资源的边缘情况,您可能仍需要使用单独的 API。 它只列出“所有标记或以前标记的资源”。所以未标记的将被错过。【参考方案4】:

按照 Ashwini 的建议,我会为此使用“资源组”中的“标签编辑器”。

您无需任何设置等即可轻松列出所有地区的所有资源。 尽管这确实包括所有默认 VPC + 安全组等(因此即使您的帐户为空,您也将获得约 140 个项目),您仍然可以相当轻松地过滤它,无论是在标签编辑器中,还是导出到 csv 并过滤例如 Excel。

【讨论】:

【参考方案5】:

是的。使用标签编辑器。

将“区域”设置为“所有区域”,将“资源类型”设置为“所有支持的资源类型”,然后点击“搜索资源”。

【讨论】:

这与 2018 年的回复完全相同:***.com/a/48288505/450398【参考方案6】:

AWS 提供的工具没有用处,因为它们并不全面。

为了缓解这个问题并提取我所有 AWS 资源的列表,我发现了这个:https://github.com/JohannesEbke/aws_list_all

我还没有测试过,但它看起来是合法的。

【讨论】:

【参考方案7】:

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

Omni 搜索功能也可用于搜索所有已发现的资源。您甚至可以通过 PacBot 终止/删除资源。

全方位搜索

带有结果过滤功能的搜索结果页面

Asset 360 / 资产详情页面

以下是 PacBot 的主要功能:

持续合规评估。 详细的合规报告。 自动修复违规行为。 全方位搜索 - 能够搜索所有发现的资源。 简化政策违规跟踪。 自助服务门户。 自定义策略和自定义自动修复操作。 动态资产分组以查看合规性。 能够创建多个合规域。 异常管理。 电子邮件摘要。 支持多个 AWS 账户。 完全自动化的安装程序。 可自定义的仪表板。 OAuth2 支持。 用于登录的 Azure AD 集成。 基于角色的访问控制。 资产 360 度。

【讨论】:

@SyCode 是的,您可以在本地托管它 你能指出如何吗,我在文档中没有提到这一点,看来我必须使用所有必要的 AWS 服务。例如,我想用 mysql 替换 RedShift。 @SyCode 完整安装设置在此link【参考方案8】:

AWS Billing Management Console 将为您提供按服务划分的本月至今的支出清单。

【讨论】:

Cost Explorer 需要大约 24 小时才能填充,但我喜欢这个答案 :)【参考方案9】:

我知道这是个老问题,但我也想帮忙。

实际上,我们有 AWS Config,它可以帮助我们搜索云中的所有资源。您也可以执行 SQL 查询。

我真的鼓励大家了解这项很棒的服务。

【讨论】:

值得注意:AWS Config 涵盖了约 80% 的 AWS 资源类型 而且你还必须为这项服务付费,你要做的就是找到你的资源,哈哈。【参考方案10】:

是的。

我遇到了同样的问题,试图弄清楚我的 AWS 账户到底发生了什么。

最后,我写了AWSRetriver,这是一个桌面工具,可以列出所有区域的 AWS 资源。

这是一个简单直接的工具,可以列出所有内容...(希望如此)

【讨论】:

【参考方案11】:

这是一篇很好的文章,列出了列出 AWS 云中资源的工具。 https://link.medium.com/tZbs8eLyohb

其中,CloudYalihttps://www.cloudyali.io是新推出的服务。它显示了来自不同账户、地区、现在和过去的所有云资源,在一个中心位置可用。

【讨论】:

【参考方案12】:

试试这个

仅适用于 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

【讨论】:

【参考方案13】:

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

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

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

"项目说明 列出 AWS 账户中的所有资源、所有区域、所有服务 (*)。写入 JSON 文件以供进一步处理。

(*) 不保证完整性。如果您担心费用,请使用账单提醒。”

【讨论】:

【参考方案14】:

我也在 AWS 中寻找类似的功能“列出所有资源”,但找不到足够好的东西。

“资源组”没有帮助,因为它只列出已标记的资源并且用户必须指定标记。如果您错过标记资源,则不会出现在 "Resource Groups" 中。

UI of "Create a resource group"

更合适的功能是"Resource Groups"->"Tag Editor",正如上一篇文章中已经提到的。选择区域和资源类型以在标签编辑器中查看资源列表。这可以达到目的,但不是很用户友好,因为我每次要使用它时都必须输入区域和资源类型。我仍在寻找易于使用的 UI。

UI of "Find resource" under "Tag Editor"

【讨论】:

其实,这对我来说是真正的救星!只需打开标签编辑器,一一选择所有区域(没有那么多)和“所有资源类型”,然后点击“查找资源”。然后您可以将整个列表下载为 CSV。【参考方案15】:

您可以在此处使用 AWS Config 控制台中的查询。 (地区可能因您而异)https://console.aws.amazon.com/config/home?region=us-east-1#/resources/query

查询将如下所示。

SELECT
  resourceId,
  resourceName,
  resourceType,
  relationships
WHERE
relationships.resourceId = 'vpc-#######'

【讨论】:

【参考方案16】:

您 can run advanced queries via AWS Config(以及来自 Config 的 CLI),这将列出所有资源。如果您定义一个涵盖所有原因(可能还有多个帐户)的聚合器,您可以获得非常全面的视图。 . . 就像“SELECT *”一样简单

【讨论】:

【参考方案17】:

另一个开源工具是 Cloud Query https://docs.cloudquery.io/

【讨论】:

【参考方案18】:

有一个云管理平台可以做到这一点。它使用户能够从单个仪表板管理多个 AWS 账户,并提供 AWS Inventory 管理。免费:https://cloudplexo.com。

【讨论】:

【参考方案19】:

另一个选项是使用此脚本,为每个资源执行“aws configservice list-discovered-resources --resource-type”

for i in  AWS::EC2::CustomerGateway AWS::EC2::EIP AWS::EC2::Host AWS::EC2::Instance AWS::EC2::InternetGateway AWS::EC2::NetworkAcl AWS::EC2::NetworkInterface AWS::EC2::RouteTable AWS::EC2::SecurityGroup AWS::EC2::Subnet AWS::CloudTrail::Trail AWS::EC2::Volume AWS::EC2::VPC AWS::EC2::***Connection AWS::EC2::***Gateway AWS::IAM::Group AWS::IAM::Policy AWS::IAM::Role AWS::IAM::User AWS::ACM::Certificate AWS::RDS::DBInstance AWS::RDS::DBSubnetGroup AWS::RDS::DBSecurityGroup AWS::RDS::DBSnapshot AWS::RDS::EventSubscription AWS::ElasticLoadBalancingV2::LoadBalancer AWS::S3::Bucket AWS::SSM::ManagedInstanceInventory AWS::Redshift::Cluster AWS::Redshift::ClusterSnapshot AWS::Redshift::ClusterParameterGroup AWS::Redshift::ClusterSecurityGroup  AWS::Redshift::ClusterSubnetGroup AWS::Redshift::EventSubscription AWS::CloudWatch::Alarm AWS::CloudFormation::Stack AWS::DynamoDB::Table AWS::AutoScaling::AutoScalingGroup AWS::AutoScaling::LaunchConfiguration AWS::AutoScaling::ScalingPolicy AWS::AutoScaling::ScheduledAction AWS::CodeBuild::Project AWS::WAF::RateBasedRule AWS::WAF::Rule AWS::WAF::WebACL AWS::WAFRegional::RateBasedRule AWS::WAFRegional::Rule AWS::WAFRegional::WebACL AWS::CloudFront::Distribution  AWS::CloudFront::StreamingDistribution AWS::WAF::RuleGroup AWS::WAFRegional::RuleGroup AWS::Lambda::Function AWS::ElasticBeanstalk::Application AWS::ElasticBeanstalk::ApplicationVersion AWS::ElasticBeanstalk::Environment AWS::ElasticLoadBalancing::LoadBalancer AWS::XRay::EncryptionConfig AWS::SSM::AssociationCompliance AWS::SSM::PatchCompliance AWS::Shield::Protection AWS::ShieldRegional::Protection AWS::Config::ResourceCompliance AWS::CodePipeline::Pipeline; do aws configservice list-discovered-resources --resource-type $i; done

【讨论】:

【参考方案20】:

编辑:此答案已弃用。检查其他答案。

不, 无法一次性获取您帐户中的所有资源。每个区域都是独立的,对于像 IAM 这样的一些服务,区域的概念根本不存在。 尽管有 API 调用可用于列出资源和服务。例如:

要获取您帐户的所有可用区域列表:
output, err := client.DescribeRegions(&ec2.DescribeRegionsInput)

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

client.GetAccountAuthorizationDetails(&amp;iam.GetAccountAuthorizationDetailsInput)

您可以在以下位置找到有关 API 调用及其使用的更多详细信息: https://docs.aws.amazon.com/sdk-for-go/api/service/iam/

以上链接仅适用于 IAM。同样,您可以找到所有其他资源和服务的 API。

【讨论】:

这个答案已经过时了【参考方案21】:

亚马逊一直在努力改善用户体验。但是,还有其他多种方法可以检查您在 AWS 中使用的资源。我相信这个新的 EC2 仪表板非常酷。单击链接将直接将您导航到特定的资源控制面板。

【讨论】:

【参考方案22】:

编辑:此答案已弃用且不正确。列出 AWS 资源的方法有多种(AWS 标签编辑器等)。查看 其他答案了解更多详情。


没有。

每个 AWS 服务(例如 Amazon EC2、Amazon S3)都有自己的一组 API 调用。此外,每个区域都是独立的。

要获取所有资源的列表,您必须对每个区域中的每个服务进行 API 调用。

您可能想要激活AWS Config:

AWS Config 提供您 AWS 账户中 AWS 资源配置的详细视图。这包括资源如何相互关联以及它们过去是如何配置的,以便您可以看到配置和关系如何随时间变化。

但是,AWS Config 仅收集有关 EC2/VPC 相关资源的信息,而不是您 AWS 账户中的所有信息。

【讨论】:

这个答案是错误的。您确实可以使用 Cost Explorer 列出所有地区的所有服务。 这个答案很可能已经过时了。现在,正如这里的一些人所提到的,您可以使用Tag Manager 或Cost Explorer 中的'每月服务费用' AWS Config 似乎对我有用。我想找到一个我出于其他原因拍摄的快照,但后来忘记了,显然为它删除了 EC2 实例。获取完整的 AWS Config 列表,然后搜索“snap”帮助我找到它。 AWS Config 仅支持有限的资源集。很大,但仍然有限。比如,没有 ECS,没有 ElastiCache 这仍然是最正确的答案。 Cost Explorer 无法列出资源,只能列出每个区域使用的服务。跟踪代码管理器仅支持资源子集,明显缺少所有 IAM 实体和 lambda 层等“子资源”。根据您的具体需求,成本浏览器或标签管理器甚至 AWS Config 可能就足够了,但今天仍然没有一个单一的管理平台可用于一个账户中的所有资源。

以上是关于有没有办法列出 AWS 中的所有资源的主要内容,如果未能解决你的问题,请参考以下文章

Amazon 资源名称 AWS RDS

有没有办法使用 cloudformation 修改 AWS 现有资源?

有没有办法列出 perluniprops 中的所有类别?

有没有办法列出终端中的所有 git 存储库?

如何使用 Java 列出存储桶中的所有 AWS S3 对象

GCP 等效于 aws 策略中的“拒绝”权限