有没有办法列出AWS中的所有资源?对于所有地区,所有资源..例如列出所有EC2实例,所有VPC,API网关中的所有API等...我想列出我帐户的所有资源,因为我很难找到我可以使用哪些资源现在放弃了。
没有。
每个AWS服务(例如Amazon EC2,Amazon S3)都有自己的一组API调用。此外,每个地区都是独立的。
要获取所有资源的列表,您必须对每个区域中的每个服务进行API调用。
你可能想要激活AWS Config:
AWS Config提供AWS账户中AWS资源配置的详细视图。这包括资源彼此之间的关系以及过去如何配置它们,以便您可以了解配置和关系如何随时间变化。
但是,AWS Config仅收集有关EC2 / VPC相关资源的信息,而不是AWS账户中的所有信息。
没有, 无法一次性获取您帐户中的所有资源。每个区域都是独立的,对于像IAM这样的区域的某些服务根本不存在。虽然有API调用可用于列出资源和服务。 例如:
output, err := client.DescribeRegions(&ec2.DescribeRegionsInput{})
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)
现在已经晚了,但你应该看看这个。不是CLI我知道,但仍然值得敲出一个小的shell脚本来做你需要的:
https://pypi.org/project/aws-list-all/
这是一个python库,用它自己的话说:
“项目描述列出AWS账户中的所有资源,所有区域,所有服务(*)。写入JSON文件以供进一步处理。
(*)不保证完整性。如果您担心费用,请使用结算提醒。“
您可以在此处使用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-#######'
另一个选择是使用此脚本为每个资源执行“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
AWS希望您忘记资源,然后付钱给他们......
根据Ashwini的建议,我会选择“资源组”中的“标签编辑器”。
您可以轻松列出所有地区的所有资源,无需任何设置等。 虽然这确实包括所有默认的VPC +安全组等(所以即使你的帐户是空的,你也会得到~140项),你仍然可以很容易地在标签编辑器中过滤它,或者导出到csv并过滤例如,Excel。
使用PacBot(作为Code Bot的策略) - 一个开源项目,它是一个用于云的持续合规性监控,合规性报告和安全自动化的平台。 PacBot发现的所有帐户和所有地区的所有资源都根据这些政策进行评估,以评估政策一致性。 Omni Search功能也可用于搜索所有已发现的资源。即使您可以通过PacBot终止/删除资源详细信息。
全方位搜索
搜索结果页面使用结果过滤
资产360 /资产详情页面
以下是PacBot的主要功能
AWS提供的工具没有用,因为它们并不全面。
在我自己寻求缓解此问题并提取所有AWS资源的列表中,我发现了这个:https://github.com/JohannesEbke/aws_list_all
我还没有测试过,但它看起来合法。
AWS Billing Management Console将根据服务纲要为您提供按月更新的支出。
我也在寻找AWS中的类似功能“列出所有资源”,但找不到任何足够好的东西。
“资源组”没有帮助,因为它只列出已标记的资源,用户必须指定标记。如果您错过了标记资源,那将不会出现在"Resource Groups"中。
UI of "Create a resource group"
一个更合适的特征是"Resource Groups"->"Tag Editor",如前一篇文章中已经提到的那样。选择区域和资源类型以在标签编辑器中查看资源列表。这符合目的但不是非常用户友好,因为每次我想使用它时都必须输入区域和资源类型。我仍然在寻找易于使用的UI。