<?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>DEV Community: Krembo Vitman</title>
    <description>The latest articles on DEV Community by Krembo Vitman (@krembo_vitman_50c3eac5aa6).</description>
    <link>https://dev.to/krembo_vitman_50c3eac5aa6</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4063081%2Ffb586ed0-a777-427f-be1d-440fefc98f53.png</url>
      <title>DEV Community: Krembo Vitman</title>
      <link>https://dev.to/krembo_vitman_50c3eac5aa6</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krembo_vitman_50c3eac5aa6"/>
    <language>en</language>
    <item>
      <title>How to Find AWS NAT Gateway Waste</title>
      <dc:creator>Krembo Vitman</dc:creator>
      <pubDate>Tue, 04 Aug 2026 20:38:54 +0000</pubDate>
      <link>https://dev.to/krembo_vitman_50c3eac5aa6/how-to-find-aws-nat-gateway-waste-21h3</link>
      <guid>https://dev.to/krembo_vitman_50c3eac5aa6/how-to-find-aws-nat-gateway-waste-21h3</guid>
      <description>&lt;p&gt;NAT gateways can become one of the most expensive "forgotten" AWS resources.&lt;br&gt;
They charge hourly, and they also charge for data processing.&lt;/p&gt;

&lt;p&gt;This guide shows how to find NAT gateways that deserve review.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why NAT Gateways Are Expensive
&lt;/h2&gt;

&lt;p&gt;A NAT gateway may be needed for private subnets to reach the internet. But old&lt;br&gt;
test environments, retired VPCs, and low-traffic workloads often leave NAT&lt;br&gt;
gateways running long after they are useful.&lt;/p&gt;

&lt;p&gt;Even a single NAT gateway can cost meaningful money every month before data&lt;br&gt;
processing charges.&lt;/p&gt;
&lt;h2&gt;
  
  
  List NAT Gateways
&lt;/h2&gt;

&lt;p&gt;Run this in one region:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-nat-gateways &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--filter&lt;/span&gt; &lt;span class="nv"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;state,Values&lt;span class="o"&gt;=&lt;/span&gt;available &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'NatGateways[].{NatGatewayId:NatGatewayId,VpcId:VpcId,SubnetId:SubnetId,State:State}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; table
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a profile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-nat-gateways &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--profile&lt;/span&gt; production &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--filter&lt;/span&gt; &lt;span class="nv"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;state,Values&lt;span class="o"&gt;=&lt;/span&gt;available &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'NatGateways[].{NatGatewayId:NatGatewayId,VpcId:VpcId,SubnetId:SubnetId,State:State}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; table
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Check All Regions
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;region &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;aws ec2 describe-regions &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'Regions[].RegionName'&lt;/span&gt; &lt;span class="nt"&gt;--output&lt;/span&gt; text&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Region: &lt;/span&gt;&lt;span class="nv"&gt;$region&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  aws ec2 describe-nat-gateways &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--region&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$region&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--filter&lt;/span&gt; &lt;span class="nv"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;state,Values&lt;span class="o"&gt;=&lt;/span&gt;available &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'NatGateways[].{NatGatewayId:NatGatewayId,VpcId:VpcId,SubnetId:SubnetId,State:State}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--output&lt;/span&gt; table
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Check Route Table Usage
&lt;/h2&gt;

&lt;p&gt;Before considering cleanup, inspect routes that point to the NAT gateway:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-route-tables &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--filters&lt;/span&gt; &lt;span class="nv"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;route.nat-gateway-id,Values&lt;span class="o"&gt;=&lt;/span&gt;nat-0123456789abcdef0 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'RouteTables[].{RouteTableId:RouteTableId,VpcId:VpcId,Routes:Routes}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If route tables still point &lt;code&gt;0.0.0.0/0&lt;/code&gt; at the NAT gateway, deleting it can&lt;br&gt;
break internet access from private subnets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check Traffic
&lt;/h2&gt;

&lt;p&gt;Use CloudWatch metrics before making any decision. Look at bytes in/out and&lt;br&gt;
packet drops over a meaningful window, such as 14 or 30 days.&lt;/p&gt;

&lt;p&gt;Low traffic does not always mean unused, but it tells you where to investigate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safe Cleanup Order
&lt;/h2&gt;

&lt;p&gt;If you confirm a NAT gateway is unnecessary:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Update or remove route table references.&lt;/li&gt;
&lt;li&gt;Verify no route table points at the NAT gateway.&lt;/li&gt;
&lt;li&gt;Delete the NAT gateway.&lt;/li&gt;
&lt;li&gt;Wait for deletion to finish.&lt;/li&gt;
&lt;li&gt;Decide separately whether to release the Elastic IP.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Elastic IP may have separate external dependencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Easier Option
&lt;/h2&gt;

&lt;p&gt;AWS Waste Finder flags running NAT gateways and puts them at the top of the&lt;br&gt;
report because they have high cost potential.&lt;/p&gt;

&lt;p&gt;Free repo:&lt;br&gt;
&lt;a href="https://github.com/byanivb/aws-waste-finder" rel="noopener noreferrer"&gt;https://github.com/byanivb/aws-waste-finder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paid starter bundle:&lt;br&gt;
&lt;a href="https://basilian1.gumroad.com/l/aws-waste-finder" rel="noopener noreferrer"&gt;https://basilian1.gumroad.com/l/aws-waste-finder&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>cloud</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Find Old EBS Snapshots Costing Money in AWS</title>
      <dc:creator>Krembo Vitman</dc:creator>
      <pubDate>Tue, 04 Aug 2026 20:32:29 +0000</pubDate>
      <link>https://dev.to/krembo_vitman_50c3eac5aa6/how-to-find-old-ebs-snapshots-costing-money-in-aws-4495</link>
      <guid>https://dev.to/krembo_vitman_50c3eac5aa6/how-to-find-old-ebs-snapshots-costing-money-in-aws-4495</guid>
      <description>&lt;p&gt;Old EBS snapshots are a common AWS storage leak. A snapshot may only cost a few&lt;br&gt;
dollars per month, but stale snapshots across regions and accounts can quietly&lt;br&gt;
pile up.&lt;/p&gt;

&lt;p&gt;This guide shows how to find old snapshots safely.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Old Snapshots Matter
&lt;/h2&gt;

&lt;p&gt;EBS snapshots are incremental, but they still store changed blocks. Keeping old&lt;br&gt;
snapshots forever can create long-term storage cost, especially when snapshots&lt;br&gt;
come from retired instances, old migrations, or abandoned backup jobs.&lt;/p&gt;
&lt;h2&gt;
  
  
  AWS CLI Command
&lt;/h2&gt;

&lt;p&gt;List snapshots owned by your account:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-snapshots &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--owner-ids&lt;/span&gt; self &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'Snapshots[].{SnapshotId:SnapshotId,StartTime:StartTime,VolumeSize:VolumeSize,Description:Description}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; table
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Find Snapshots Older Than 90 Days
&lt;/h2&gt;

&lt;p&gt;You can use &lt;code&gt;jq&lt;/code&gt; for a more precise local filter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;cutoff&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; &lt;span class="nt"&gt;-v-90d&lt;/span&gt; &lt;span class="s1"&gt;'+%Y-%m-%dT%H:%M:%S'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

aws ec2 describe-snapshots &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--owner-ids&lt;/span&gt; self &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; json |
jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nt"&gt;--arg&lt;/span&gt; cutoff &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$cutoff&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s1"&gt;'
  .Snapshots[]
  | select(.StartTime &amp;lt; $cutoff)
  | [.SnapshotId, .StartTime, .VolumeSize, .Description]
  | @tsv
'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Linux, replace the &lt;code&gt;date&lt;/code&gt; command with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;cutoff&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'90 days ago'&lt;/span&gt; &lt;span class="s1"&gt;'+%Y-%m-%dT%H:%M:%S'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Check All Regions
&lt;/h2&gt;

&lt;p&gt;Snapshots are regional:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;region &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;aws ec2 describe-regions &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'Regions[].RegionName'&lt;/span&gt; &lt;span class="nt"&gt;--output&lt;/span&gt; text&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Region: &lt;/span&gt;&lt;span class="nv"&gt;$region&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  aws ec2 describe-snapshots &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--owner-ids&lt;/span&gt; self &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--region&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$region&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'Snapshots[].{SnapshotId:SnapshotId,StartTime:StartTime,VolumeSize:VolumeSize}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--output&lt;/span&gt; table
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Before You Delete a Snapshot
&lt;/h2&gt;

&lt;p&gt;Do not delete old snapshots blindly.&lt;/p&gt;

&lt;p&gt;Check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether the snapshot backs an AMI&lt;/li&gt;
&lt;li&gt;retention policies&lt;/li&gt;
&lt;li&gt;compliance or audit requirements&lt;/li&gt;
&lt;li&gt;disaster recovery plans&lt;/li&gt;
&lt;li&gt;whether it was created before a risky migration or upgrade&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a snapshot backs an AMI, deregistering or deleting things in the wrong order&lt;br&gt;
can break restore workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Easier Option
&lt;/h2&gt;

&lt;p&gt;AWS Waste Finder finds owned EBS snapshots older than your configured threshold&lt;br&gt;
and estimates the monthly snapshot storage cost.&lt;/p&gt;

&lt;p&gt;Free repo:&lt;br&gt;
&lt;a href="https://github.com/byanivb/aws-waste-finder" rel="noopener noreferrer"&gt;https://github.com/byanivb/aws-waste-finder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paid starter bundle:&lt;br&gt;
&lt;a href="https://basilian1.gumroad.com/l/aws-waste-finder" rel="noopener noreferrer"&gt;https://basilian1.gumroad.com/l/aws-waste-finder&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>cloud</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Find Unused Elastic IPs in AWS</title>
      <dc:creator>Krembo Vitman</dc:creator>
      <pubDate>Tue, 04 Aug 2026 20:31:56 +0000</pubDate>
      <link>https://dev.to/krembo_vitman_50c3eac5aa6/how-to-find-unused-elastic-ips-in-aws-4an</link>
      <guid>https://dev.to/krembo_vitman_50c3eac5aa6/how-to-find-unused-elastic-ips-in-aws-4an</guid>
      <description>&lt;p&gt;Unused Elastic IPs are one of the easiest AWS cost leaks to miss. They look&lt;br&gt;
small, but they keep billing while they are allocated and not attached to a&lt;br&gt;
running resource.&lt;/p&gt;

&lt;p&gt;This guide shows how to find them safely.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Is an Unused Elastic IP?
&lt;/h2&gt;

&lt;p&gt;An Elastic IP is likely unused when it has no &lt;code&gt;AssociationId&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That means AWS has allocated the public IP to your account, but it is not&lt;br&gt;
currently associated with an EC2 instance, NAT gateway, network interface, or&lt;br&gt;
other resource.&lt;/p&gt;
&lt;h2&gt;
  
  
  AWS CLI Command
&lt;/h2&gt;

&lt;p&gt;Run this for one region:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-addresses &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'Addresses[?AssociationId==null].[AllocationId,PublicIp]'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; table
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it with a profile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws ec2 describe-addresses &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--profile&lt;/span&gt; production &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'Addresses[?AssociationId==null].[AllocationId,PublicIp]'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; table
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Check All Regions
&lt;/h2&gt;

&lt;p&gt;Elastic IPs are regional, so check every enabled region:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;region &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;aws ec2 describe-regions &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'Regions[].RegionName'&lt;/span&gt; &lt;span class="nt"&gt;--output&lt;/span&gt; text&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Region: &lt;/span&gt;&lt;span class="nv"&gt;$region&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  aws ec2 describe-addresses &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--region&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$region&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'Addresses[?AssociationId==null].[AllocationId,PublicIp]'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--output&lt;/span&gt; table
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Before You Release an Elastic IP
&lt;/h2&gt;

&lt;p&gt;Do not release an IP just because it is unattached.&lt;/p&gt;

&lt;p&gt;First check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DNS records&lt;/li&gt;
&lt;li&gt;customer allowlists&lt;/li&gt;
&lt;li&gt;partner allowlists&lt;/li&gt;
&lt;li&gt;firewall rules&lt;/li&gt;
&lt;li&gt;webhook documentation&lt;/li&gt;
&lt;li&gt;old deployment or rollback notes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some public IPs are referenced outside AWS, so AWS cannot tell you every&lt;br&gt;
dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Easier Option
&lt;/h2&gt;

&lt;p&gt;AWS Waste Finder scans for unassociated Elastic IPs and includes them in a&lt;br&gt;
Markdown, JSON, or HTML report.&lt;/p&gt;

&lt;p&gt;Free repo:&lt;br&gt;
&lt;a href="https://github.com/byanivb/aws-waste-finder" rel="noopener noreferrer"&gt;https://github.com/byanivb/aws-waste-finder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paid starter bundle:&lt;br&gt;
&lt;a href="https://basilian1.gumroad.com/l/aws-waste-finder" rel="noopener noreferrer"&gt;https://basilian1.gumroad.com/l/aws-waste-finder&lt;/a&gt;&lt;/p&gt;

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