ChatGPT解决这个技术问题 Extra ChatGPT

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

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

看看我对这个问题的回答 - stackoverflow.com/questions/43984337/multiple-aws-reigon/…应该足以让你开始。
您可以为所有区域和您需要查看的所有服务创建资源组。资源组将在一个地方向您展示所有这些资源。您也可以为此使用 aws cli。 aws.amazon.com/blogs/aws/resource-groups-and-tagging
是的。使用标签编辑器。将“区域”设置为“所有区域”,将“资源类型”设置为“所有支持的资源类型”,然后单击“搜索资源”。
多么奇特的问题啊!

S
Steve Chambers

是的。使用 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 上的文档
R
Raman Sahasi

您可以使用 Tag Editor

转到 AWS 控制台 在顶部导航窗格中,单击资源组下拉菜单 单击标签编辑器

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

https://i.stack.imgur.com/KzwmA.png


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

我认为这可能会有所帮助!在这里,您需要输入区域名称,并且您必须先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。
它仅列出“所有标记或先前标记的资源”。所以未标记的将被错过。
@AlexanderShmidt 看起来他们现在改进了它。使用最新的 aws cli,它还列出了没有标签的资源。在 ResourceTagMappingList 中,您会得到如下内容: "Tags": []
D
Dylan

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

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


R
RichVel

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

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

全方位搜索

https://raw.githubusercontent.com/tmobile/pacbot/master/wiki/images/omni-search.png

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

https://raw.githubusercontent.com/wiki/tmobile/pacbot/images/search-results.png

Asset 360 / 资产详情页面

https://raw.githubusercontent.com/wiki/tmobile/pacbot/images/asset-details.png

以下是 PacBot 的主要功能:

持续合规评估。

详细的合规报告。

自动修复策略违规。

全方位搜索 - 能够搜索所有发现的资源。

简化的策略违规跟踪。

自助服务门户。

自定义策略和自定义自动修复操作。

动态资产分组以查看合规性。

能够创建多个合规域。

异常管理。

电子邮件摘要。

支持多个 AWS 账户。

完全自动化的安装程序。

可定制的仪表板。

OAuth2 支持。

用于登录的 Azure AD 集成。

基于角色的访问控制。

资产 360 度。


@SyCode 是的,您可以在本地托管它
您能否指出如何,我在文档中没有提到这一点,似乎我必须使用所有必要的 AWS 服务。例如,我想用 MySQL 替换 RedShift。
@SyCode 完整安装设置在此 link
L
Luke Chavers

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

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

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


d
dbkaplun

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


Cost Explorer 需要大约 24 小时才能填充,但我喜欢这个答案:)
这是否会错过没有任何成本的资源——比如那个月没有使用的 lambda?
B
Brenno Leal

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

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

我真的鼓励你们都知道这项很棒的服务。


值得注意:AWS Config 涵盖了约 80% 的 AWS 资源类型
而且您还必须为这项服务付费,而您要做的就是找到您的资源,哈哈。
u
user3165224

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

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


D
Danny Tylman

是的。

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

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

https://i.stack.imgur.com/DQ9iy.png


S
STang

尝试这个

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


S
Surj

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

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

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

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

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


J
Josh Beauregard

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

查询看起来像。

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

谢谢,很有帮助。链接对我不起作用,但这里是 aws 文档:docs.aws.amazon.com/config/latest/developerguide/…
D
DWright

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


D
Dipak Kumar Singh

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

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

UI of "Create a resource group"

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

UI of "Find resource" under "Tag Editor"


实际上,这对我来说是真正的救命稻草!只需打开标签编辑器,一一选择所有区域(数量不多)和“所有资源类型”,然后点击“查找资源”。然后,您可以将整个列表下载为 CSV。
A
AhmedRana

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


R
Richardsop

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


R
Raman Sahasi

编辑:此答案已弃用且不正确。列出 AWS 资源的方法有多种(AWS 标签编辑器等)。检查其他答案以获取更多详细信息。

不。

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

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

您可能想要激活 AWS Config

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

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


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

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

N
Neithan Max

编辑:这个答案已被弃用。检查其他答案。

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


这个答案已经过时了
M
Manjeet

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

https://i.stack.imgur.com/Wojqz.png


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅