问题描述
在使用AWS时,经常遇到跟踪AWS资源以及它们之间的连接关系的困难。尽管使用了Terraform,仍然会有一些临时操作影响了他的可见性。他提到自己多次被收取了未使用的资源或服务的费用。
他所指的未使用的资源包括那些存在于AWS环境中但并没有被使用的资源,不包括指向其他服务的资源。
用户还希望得到一些建议的工具。
解决方案
请注意以下操作可能存在版本差异,操作前请做好备份。
方案1
一个方法是通过为某些受信任或已知组中的项目添加标记,手动监视未被适当标记的资源并删除它们。你可以扩展这个方法,编写一个定期运行的Python脚本来识别和删除这些资源。
另外,AWS已经提供了一种方法来监视我们的资源,识别未使用的资源并使用CloudWatch警报来终止它们。你可以从配置一些基于你可能已经在手动执行的一些检查的警报开始。一旦你确定警报的准确性,可以添加一个终止步骤。
方案2
另一种方法是使用Netflix开发的工具JanitorMonkey,它可以监视和删除未使用的EC2实例、EBS卷、EBS快照和自动缩放组。这个工具是Netflix开源项目”Simian Army”的一部分,用Java编写,虽然年代有些久远,但高度可配置且值得一试。
无论使用哪种方法,都可以根据你的需求配置警告和业务规则。另外,使用CloudWatch也是学习更多关于AWS日志和异常识别的好机会。
注:JanitorMonkey似乎已经不再维护。
方案3
你也可以尝试创建一个名为AWS Inventory的工具,它可以涵盖你账户中的所有可用资源。尽管该工具还在不断完善中,但通过将API名称添加到列表中,你可以很容易地添加可能缺失的项目。
该工具只是一个单一的HTML文件,使用aws-sdk.js
来查询不同CORS启用的服务的各种list...
和describe...
API。
该项目在MIT许可下开源,可以在GitHub上找到:https://github.com/devops-israel/aws-inventory。
方案4
如果你希望仅使用AWS提供的工具,你可以尝试以下方法:
1. 找到适合你的标记方案。
2. 为所有你创建的资源添加标记,确保没有资源被遗漏。
3. 对于在Terraform之外创建的资源,可以使用AWS Config服务来强制执行标记方案。
4. 一旦所有资源都被标记,可以使用AWS Budgets监控和追踪支出的变化,并在超过定义的预算阈值时收到警报。
5. 同时,可以在AWS成本资源管理器中创建和定期查看一些报告,以查找每日在区域支出、服务支出等方面的变化。
使用严格且有意义的标记方案有助于维护健康的账户,减少资源浪费。
总结
在AWS中跟踪和管理未使用的资源可以采用多种方法,包括手动的标记和监测、使用AWS提供的警报和删除机制、以及使用开源工具和第三方工具来帮助识别和删除未使用的资源。选择合适的方法取决于你的需求和偏好。