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

问题描述 投票:71回答:13

有没有办法列出AWS中的所有资源?对于所有地区,所有资源..例如列出所有EC2实例,所有VPC,API网关中的所有API等...我想列出我帐户的所有资源,因为我很难找到我可以使用哪些资源现在放弃了。

amazon-web-services
13个回答
13
投票

没有。

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

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

你可能想要激活AWS Config

AWS Config提供AWS账户中AWS资源配置的详细视图。这包括资源彼此之间的关系以及过去如何配置它们,以便您可以了解配置和关系如何随时间变化。

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


0
投票

没有, 无法一次性获取您帐户中的所有资源。每个区域都是独立的,对于像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。

  • 0
    投票

    试试这个

    仅限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


    0
    投票

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

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

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

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

    (*)不保证完整性。如果您担心费用,请使用结算提醒。“


    0
    投票

    您可以在此处使用AWS Config Console中的查询。 (地区可能会改变你)https://console.aws.amazon.com/config/home?region=us-east-1#/resources/query

    查询看起来像。

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

    0
    投票

    另一个选择是使用此脚本为每个资源执行“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::VPNConnection AWS::EC2::VPNGateway 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
    

    0
    投票

    AWS希望您忘记资源,然后付钱给他们......


    122
    投票

    是。使用Tag Editor。您可以单击以管理各个资源。

    https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html


    5
    投票

    根据Ashwini的建议,我会选择“资源组”中的“标签编辑器”。

    您可以轻松列出所有地区的所有资源,无需任何设置等。 虽然这确实包括所有默认的VPC +安全组等(所以即使你的帐户是空的,你也会得到~140项),你仍然可以很容易地在标签编辑器中过滤它,或者导出到csv并过滤例如,Excel。


    5
    投票

    使用PacBot(作为Code Bot的策略) - 一个开源项目,它是一个用于云的持续合规性监控,合规性报告和安全自动化的平台。 PacBot发现的所有帐户和所有地区的所有资源都根据这些政策进行评估,以评估政策一致性。 Omni Search功能也可用于搜索所有已发现的资源。即使您可以通过PacBot终止/删除资源详细信息。

    全方位搜索

    搜索结果页面使用结果过滤

    资产360 /资产详情页面

    以下是PacBot的主要功能

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

    5
    投票

    您可以使用标签编辑器。

    1. 转到AWS控制台
    2. 在TOP导航窗格中,单击Resource Groups下拉列表
    3. 点击Tag Editor AWS list all resources across all regions

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

    enter image description here


    4
    投票

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

    在我自己寻求缓解此问题并提取所有AWS资源的列表中,我发现了这个:https://github.com/JohannesEbke/aws_list_all

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


    2
    投票

    AWS Billing Management Console将根据服务纲要为您提供按月更新的支出。


    1
    投票

    是。

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

    最后,我最终编写了AWSRetriver,这是一个桌面工具,用于列出所有地区的AWS资源。

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


    0
    投票

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

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

    UI of "Create a resource group"

    一个更合适的特征是"Resource Groups"->"Tag Editor",如前一篇文章中已经提到的那样。选择区域和资源类型以在标签编辑器中查看资源列表。这符合目的但不是非常用户友好,因为每次我想使用它时都必须输入区域和资源类型。我仍然在寻找易于使用的UI。

    UI of "Find resource" under "Tag Editor"

    © www.soinside.com 2019 - 2024. All rights reserved.