<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Vu Huu Phuong</title>
    <description>The latest articles on Forem by Vu Huu Phuong (@vuhp).</description>
    <link>https://forem.com/vuhp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2272299%2F7dccc84c-bd50-48b5-8d01-bfd6b2dc85d8.jpeg</url>
      <title>Forem: Vu Huu Phuong</title>
      <link>https://forem.com/vuhp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vuhp"/>
    <language>en</language>
    <item>
      <title>I was manually checking for idle AWS instances every month. So I built a tool.</title>
      <dc:creator>Vu Huu Phuong</dc:creator>
      <pubDate>Fri, 06 Feb 2026 09:10:22 +0000</pubDate>
      <link>https://forem.com/vuhp/i-was-manually-checking-for-idle-aws-instances-every-month-so-i-built-a-tool-49ng</link>
      <guid>https://forem.com/vuhp/i-was-manually-checking-for-idle-aws-instances-every-month-so-i-built-a-tool-49ng</guid>
      <description>&lt;p&gt;Every month I'd log into AWS console, click through each region, check CPU metrics, make a spreadsheet. Took 1-2 hours.&lt;/p&gt;

&lt;p&gt;The problem? I was only checking EC2 instances. Volumes, snapshots, load balancers—I'd look at those maybe twice a year when the bill seemed high.&lt;/p&gt;

&lt;p&gt;Last month I finally did a full audit. Found an EBS volume we forgot about - $120/month for 8 months. That was the breaking point.&lt;/p&gt;

&lt;p&gt;Spent a weekend building a CLI that checks everything automatically. Ran it on our account: $800/month in waste. Ouch.&lt;/p&gt;

&lt;h2&gt;
  
  
  "But AWS has Cost Explorer and Trusted Advisor?"
&lt;/h2&gt;

&lt;p&gt;Yeah, I know. And Azure has Cost Management. GCP has Recommender.&lt;/p&gt;

&lt;p&gt;Here's why I still built this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trusted Advisor's free tier is limited.&lt;/strong&gt; The good stuff (right-sizing recommendations) needs Business/Enterprise support. That's $100+/month minimum.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost Explorer shows spending, not why.&lt;/strong&gt; You can see your EC2 bill went up, but you still have to dig through CloudWatch metrics manually to find which instances are idle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-cloud is painful.&lt;/strong&gt; We use AWS and Azure. Switching between portals, different UIs, exporting to spreadsheets to compare... it's a mess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I wanted something fast.&lt;/strong&gt; Run one command. Get a list. Done.&lt;/p&gt;

&lt;p&gt;So yeah, the cloud providers have tools. But they're either expensive, buried in consoles, or split across platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;A CLI that scans AWS, Azure, and GCP for waste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; cloud-cost-cli
cloud-cost-cli scan &lt;span class="nt"&gt;--provider&lt;/span&gt; aws &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It finds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Idle EC2/VM instances (low CPU for 7 days)&lt;/li&gt;
&lt;li&gt;Unattached EBS volumes and disks&lt;/li&gt;
&lt;li&gt;Snapshots older than 90 days&lt;/li&gt;
&lt;li&gt;Oversized RDS databases&lt;/li&gt;
&lt;li&gt;Unused load balancers&lt;/li&gt;
&lt;li&gt;And 15+ other things&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rcfyisuugoqgyraca8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rcfyisuugoqgyraca8w.png" alt="Terminal output showing scan results" width="800" height="363"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;(Screenshot from a different account - I didn't capture my original scan, but the format looks like this)&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What it found in our account
&lt;/h2&gt;

&lt;p&gt;Real examples from our first scan:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$240/month&lt;/strong&gt; - EBS snapshots created every 12 hours, kept forever. We forgot to set retention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$180/month&lt;/strong&gt; - Staging environment running 24/7. Nobody told me we only use it 9-5 weekdays.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$120/month&lt;/strong&gt; - Volume attached to an instance we terminated 8 months ago. AWS doesn't auto-delete volumes when you kill instances. Learned that the hard way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$85/month&lt;/strong&gt; - EC2 instance at 8% CPU. Used to be a CI runner, migrated to GitHub Actions, forgot to turn it off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$175/month&lt;/strong&gt; - RDS instance in a region we don't even use anymore. From a failed migration attempt last year.&lt;/p&gt;

&lt;p&gt;Total: &lt;strong&gt;$800/month = $9,600/year&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These aren't huge numbers individually. But they add up. And we're a small team. I don't want to know what enterprises are leaking.&lt;/p&gt;
&lt;h2&gt;
  
  
  The dashboard (just added)
&lt;/h2&gt;

&lt;p&gt;CLI works great for automation, but I wanted something visual.&lt;/p&gt;

&lt;p&gt;Built a web dashboard:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cloud-cost-cli dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opens at localhost:9090. You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store credentials (encrypted locally)&lt;/li&gt;
&lt;li&gt;Run scans with a button&lt;/li&gt;
&lt;li&gt;See trends over time&lt;/li&gt;
&lt;li&gt;Filter by confidence level&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffw1df3jpb8jxa1qc4gr0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffw1df3jpb8jxa1qc4gr0.png" alt="Dashboard screenshot showing trend chart and opportunities" width="800" height="755"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It doesn't send data anywhere. Everything stays on your machine. I'm not interested in your cloud bills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-cloud is the real win
&lt;/h2&gt;

&lt;p&gt;Honestly, if you only use AWS and have Business support, Trusted Advisor might be enough for you.&lt;/p&gt;

&lt;p&gt;Where this actually helps: &lt;strong&gt;when you use multiple clouds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We use AWS (main infra) and Azure (some client projects). I can run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cloud-cost-cli scan &lt;span class="nt"&gt;--provider&lt;/span&gt; aws &lt;span class="nt"&gt;--all-regions&lt;/span&gt;
cloud-cost-cli scan &lt;span class="nt"&gt;--provider&lt;/span&gt; azure &lt;span class="nt"&gt;--all-regions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And get one unified list. Same format. Same confidence scoring. Actual apples-to-apples comparison.&lt;/p&gt;

&lt;p&gt;That's what I couldn't get from the native tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works (brief version)
&lt;/h2&gt;

&lt;p&gt;Uses the official SDKs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS SDK (CloudWatch for metrics, EC2 for resources)&lt;/li&gt;
&lt;li&gt;Azure SDK (Monitor, Compute, Storage)&lt;/li&gt;
&lt;li&gt;GCP SDK (Compute, Monitoring)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For right-sizing recommendations, it pulls 7 days of CPU/memory/network/disk metrics. If everything's consistently low (&amp;lt; 10%), it suggests downsizing.&lt;/p&gt;

&lt;p&gt;Confidence levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HIGH&lt;/strong&gt; - All metrics low, safe to act&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MEDIUM&lt;/strong&gt; - Multiple metrics low, worth reviewing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LOW&lt;/strong&gt; - CPU-only or mixed signals, manual check needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All read-only. It won't touch your infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/vuhp/cloud-cost-cli" rel="noopener noreferrer"&gt;https://github.com/vuhp/cloud-cost-cli&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; cloud-cost-cli
cloud-cost-cli scan &lt;span class="nt"&gt;--provider&lt;/span&gt; aws &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or launch the dashboard:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cloud-cost-cli dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's free and open source. MIT license.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Still pretty early. Things I want to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Export reports to PDF/Excel (for finance team)&lt;/li&gt;
&lt;li&gt;Historical comparison (track progress over time)&lt;/li&gt;
&lt;li&gt;Alert when waste spikes&lt;/li&gt;
&lt;li&gt;Maybe scheduled scans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But honestly, it already does the main thing: finds waste fast.&lt;/p&gt;




&lt;p&gt;If you're tired of cloud bills creeping up, give it a shot. Worst case, you find out you're actually optimized (nice problem to have). Best case, you find money sitting there doing nothing.&lt;/p&gt;

&lt;p&gt;Let me know if you find anything interesting. Or if it breaks. Probably still has bugs.&lt;/p&gt;

&lt;h1&gt;
  
  
  devops #cloud
&lt;/h1&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>finops</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
