We're a relatively small shop without Terraform or other infrastructure-as-code tooling, so our resources are managed through the cloud console. We have a few EC2 instances, public IPs, RDS instances, EBS volumes, and related networking resources. I need to remove capacity by deleting two EC2 instances, but I want to identify their attached volumes, Elastic IPs, network interfaces, and security groups first. Some of the instances also connect to RDS, so I want to avoid deleting anything still in use. Is there a tool that can list these relationships without automatically deleting resources? I'd prefer to review everything manually and then remove the confirmed leftovers through the console.
4 Answers
Be especially careful with EBS volumes and Elastic IPs. A volume whose delete-on-termination setting is false will remain after the instance is deleted, and an unassociated Elastic IP can continue to incur charges. Record the volume IDs and IPs before termination, then confirm they are no longer needed before removing them.
CloudFormation's IaC Generator can inspect existing resources and produce a template describing them. It may help map related infrastructure even if you don't normally use infrastructure as code. Treat the generated template as an inventory rather than an automatic cleanup plan, and verify the relationships manually.
For only a couple of instances, the EC2 console may be enough. Open each instance and check its Storage and Networking tabs. Those sections show the attached EBS volumes, network interfaces, private or public IPs, and security groups. Also check whether any Elastic IP is still associated after termination.
AWS Resource Explorer and the resource groups view can provide a broader inventory across the account. The Tag Editor is useful too, especially if your resources are consistently tagged. These are good for finding resources to review, but they won't always explain every dependency, so verify each item from the EC2, RDS, and networking consoles before deleting it.

I left the volumes at their default setting rather than explicitly enabling delete-on-termination, so I'll record the attached volume IDs and remove them separately after checking them. I also named the Elastic IPs, which should make the review easier.