Cómo encontrar los recursos de AWS que nadie usa

Cuatro cosas siguen generando cargos en AWS mucho después de que nadie las use: volúmenes de EBS sin asociar a ninguna instancia, IP elásticas que no están asignadas a nada, instancias EC2 que apenas trabajan e instancias RDS a las que nadie se conecta. Las cuatro se encuentran con las propias funciones de AWS. El trabajo está en repetir la misma comprobación región por región y cuenta por cuenta. Aquí van, en orden, cómo buscar cada una con la AWS CLI y qué conviene comprobar antes de borrarla. La región, los ID de instancia, los identificadores de base de datos y las fechas que aparecen en los comandos son ejemplos: sustitúyalos por los valores de su entorno.

Última actualización: 2026-09-22

Por qué se quedan ahí

Al eliminar una instancia EC2, según cómo esté configurada, el volumen de EBS se queda. Una IP elástica que se reservó para una prueba sigue reservada después de borrar la instancia, mientras nadie la libere. Un entorno de pruebas que nadie se acordó de apagar, o la base de datos vieja que quedó tras una migración, siguen funcionando y generando cargos sin que nadie los use.

Cada uno cuesta tan poco por separado que no se nota en la factura, así que nada llama la atención sobre él; y cuando quien lo creó cambia de equipo o deja la empresa, se queda ahí como algo que nadie sabe si se puede borrar.

Lo que conviene saber antes de buscar

EC2, EBS, Elastic IP y RDS son recursos por región. Tanto la consola como la CLI muestran solo lo que hay en la región que está mirando, así que lo que quedó olvidado en una región que nadie usa es justo lo que se pasa por alto. Repita los pasos de abajo en todas las regiones habilitadas.

Desde febrero de 2024, toda dirección IPv4 pública se cobra a USD 0.005 por hora, esté en uso o no. Una IP elástica que no está asignada a nada sigue costando eso sin servir para nada, así que es lo primero que hay que quitar de en medio.

  1. Buscar los volúmenes de EBS sin asociar a ninguna instancia

    Un volumen cuyo estado es available no está asociado a ninguna instancia. En la consola, filtre por estado en “Volúmenes”, dentro de EC2. Desde la CLI, este comando los lista.

    aws ec2 describe-volumes --region ap-northeast-1 --filters Name=status,Values=available --query 'Volumes[].[VolumeId,Size,VolumeType,CreateTime]' --output table

    Antes de borrarlo, compruebe si todavía puede hacer falta. La etiqueta de nombre y la fecha de creación suelen decir para qué era. Si no lo tiene claro, tomar una instantánea y borrar después el volumen deja, en la mayoría de los casos, una forma de volver atrás con un costo de almacenamiento menor.

  2. Buscar las IP elásticas sin usar

    Una dirección que no tiene ID de asociación es una IP elástica sin usar.

    aws ec2 describe-addresses --region ap-northeast-1 --query 'Addresses[?AssociationId==`null`].[PublicIp,AllocationId]' --output table

    No hay ninguna garantía de poder recuperar una dirección que se ha liberado. Antes de liberarla, compruebe que no esté en un registro de DNS ni en la lista de permitidos del firewall de un cliente o de un socio.

  3. Buscar las instancias EC2 que apenas trabajan

    Mire la métrica CPUUtilization de CloudWatch promediada sobre unas dos semanas. Sustituya las fechas de inicio y de fin por los 14 días anteriores al día en que ejecute el comando. Lo que devuelve es un único promedio de todo el periodo. Una instancia cuyo promedio no llega a unos pocos por ciento es candidata a estar sin usar, o a tener un tamaño mayor del que necesita.

    aws cloudwatch get-metric-statistics --region ap-northeast-1 --namespace AWS/EC2 --metric-name CPUUtilization --dimensions Name=InstanceId,Value=i-0123456789abcdef0 --start-time 2026-09-06T00:00:00Z --end-time 2026-09-20T00:00:00Z --period 1209600 --statistics Average

    Tenga cuidado de no decidir solo por la CPU. Un proceso por lotes que se ejecuta una vez al mes, una máquina en espera o un host bastión son necesarios aunque su CPU media sea baja. Mire también el tráfico de red y, al final, pregunte a quien la usa. Si tiene habilitado AWS Compute Optimizer, es la propia AWS la que propone los candidatos inactivos y sobredimensionados.

  4. Buscar las instancias RDS a las que nadie se conecta

    Mire la métrica DatabaseConnections de CloudWatch promediada sobre una semana aproximadamente. También aquí, sustituya las fechas por los últimos 7 días. Si el promedio queda por debajo de 1, es muy probable que ninguna aplicación se esté conectando.

    aws cloudwatch get-metric-statistics --region ap-northeast-1 --namespace AWS/RDS --metric-name DatabaseConnections --dimensions Name=DBInstanceIdentifier,Value=mydb --start-time 2026-09-13T00:00:00Z --end-time 2026-09-20T00:00:00Z --period 604800 --statistics Average

    Una instancia RDS detenida vuelve a arrancar sola a los 7 días. Si tiene la certeza de que no se va a usar, lo seguro es tomar una instantánea final y eliminarla.

  5. Verlos todos juntos con las funciones de AWS

    En lugar de revisarlos uno por uno, puede dejar que las propias funciones de AWS le presenten los candidatos. Cost Optimization Hub reúne en una sola vista los recursos inactivos y las recomendaciones de cambio de tamaño, cada una con su ahorro estimado. Compute Optimizer da recomendaciones para EC2, EBS y otros servicios. Trusted Advisor también tiene comprobaciones de optimización de costos, pero para usarlas hace falta un plan de soporte Business Support+ o superior.

    Todas se habilitan y se usan por cuenta, o por organización de AWS Organizations.

Cómo mantenerlo en varias cuentas

Ninguna de las comprobaciones anteriores se hace una vez y ya está. Cada día se crean recursos nuevos, así que esto vuelve de forma periódica, en todas las regiones y tantas veces como cuentas tenga a su cargo.

Sabaki hace esta comprobación solo, todas las noches, con nada más que un rol de solo lectura. Las condiciones son: EC2 por debajo del 5% de uso medio de CPU en los últimos 14 días, RDS por debajo de 1 conexión de media en los últimos 7 días, EBS en estado available, e IP elásticas sin asociar. Por cada recurso detectado calcula una estimación mensual con las tarifas bajo demanda de la lista de precios de AWS y explica en español por qué lo considera desperdicio y cómo resolverlo. La estimación supone Linux y tenencia compartida, y no incluye descuentos ni cargos como el almacenamiento de RDS. Las regiones que revisa son aquellas en las que hubo costo en los últimos 30 días. Con el plan Team o superior, y varias cuentas de clientes conectadas, se ven ordenadas cliente por cliente. Sabaki nunca borra nada.

Esos cuatro tipos son todo lo que detecta. Las puertas de enlace NAT, los balanceadores de carga, las instantáneas antiguas y cosas así quedan fuera, así que revíselos con las funciones de AWS de arriba. Con el plan Free (una cuenta), la detección y las recomendaciones de ahorro están completas. Lo tiene con detalle en La visibilidad de costos y las recomendaciones de ahorro en AWS.

Conecte un rol de solo lectura y en unos minutos tendrá los primeros resultados

El plan Free incluye una cuenta y un usuario, sin tarjeta de crédito. Lo único que hace falta es un rol IAM de solo lectura: no se registran claves de acceso ni se piden permisos de escritura.

Preguntas frecuentes relacionadas

Guías relacionadas

Si le resulta útil, compártalo con quien lo necesite.