Schedule icon
Commands icon
Docker icon
If icon
SlackIncomingWebhook icon
Log icon

Detect Unattached EBS Volumes Billing for Nothing

Find unattached EBS volumes still billing for storage and alert Slack with the reclaim list.

Categories
CloudInfrastructure

A detached volume keeps billing until it is deleted. This blueprint lists EBS volumes, flags those in available state, totals the billable GiB, and alerts Slack with the exact volume ids. The schedule ships disabled so you can verify credentials first.

How it works

  1. audit_volumes (io.kestra.plugin.scripts.shell.Commands on the AWS CLI) runs describe-volumes, filters to available state, and emits counts, total GiB, and the volume list via the ::{"outputs": ...}:: protocol.
  2. waste_found (io.kestra.plugin.core.flow.If) branches: any unattached volume -> alert_waste; clean -> log_clean.
  3. The errors block alerts when the audit itself fails.
  4. Triggers: a disabled weekly Schedule.

What you get

  • Named list of unattached volumes with sizes and total billable GiB.
  • A weekly FinOps sweep with history in every execution.
  • Failure alerts so a dead credential never reads as "no waste".

Who it's for

  • FinOps engineers trimming EBS spend.
  • Platform teams enforcing detach-then-delete hygiene.
  • Anyone with a graveyard of leftover data disks.

Why orchestrate this with Kestra

The AWS CLI answers questions; the flow turns them into a verdict on a schedule, with an alert that names names. The next step (snapshot-then-delete-volume, tag the owner, open a ticket) is one task away.

Prerequisites

  • Docker available on the Kestra Worker.
  • AWS credentials with ec2:DescribeVolumes in the environment or an instance profile.
  • A Slack webhook.

Secrets

  • SLACK_WEBHOOK_URL: webhook for waste and failure alerts.

Quick start

  1. Add the Slack webhook secret and AWS credentials.
  2. Run once to see audit_summary.
  3. Enable the weekly schedule.

How to extend

  • Snapshot-then-delete after a second confirmation week.
  • Join volume age via CreateTime to prioritize the oldest waste.
  • Multiply GiB by per-GB-month price for a dollar figure.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.