Descripción del problema
Las copias instantáneas de volumen de AWS, también conocidas como snapshots de Amazon Elastic Block Store (EBS), son muy utilizadas para respaldar y restaurar datos en Amazon EC2, dado lo importante que es hoy en día mantenerse protegido. Pero ¿cómo se cobran estas instantáneas? ¿Cuánto me cuesta permanecer protegido? ¿Puedo reducir de alguna manera mi factura de AWS eliminando los recursos no utilizados? En este artículo, responderemos a cada una de estas preguntas con respuestas esclarecedoras.
Los recursos en la nube mal gestionados y las facturas imprevisibles en la nube no son un mito. Los responsables de TI se enfrentan a diario con este problema común. La falta de transparencia podría ser uno de los principales obstáculos, que impide analizar y optimizar los costos de tu nube de AWS. La visibilidad es una clave para la optimización, y tener una estrategia de FinOps claramente definida tiene como objetivo aportar más transparencia, prevenir los excesos de presupuesto e identificar el presupuesto desperdiciado y los recursos ociosos, como las instantáneas de disco huérfanas y no utilizadas.
Cómo se cargan las instantáneas de volumen de AWS
Las instantáneas de EBS se cobran por gigabyte al mes, por lo que es importante entender cómo se generan y cuánto almacenamiento consumen en realidad.
Las instantáneas de AWS se almacenan de forma incremental. Esto significa que la primera instantánea de tu instancia es una copia completa, y cada instantánea adicional es incremental, por lo que solo se almacenan las partes modificadas, o deltas, de tu volumen EBS.
Veamos un ejemplo de esto: aquí hay una instancia de 200GB funcionando en tu cuenta. La primera instantánea que crees será también de 200 GB, y se te cobrará por esta cantidad de datos. Si tienes 205 GB de datos adicionales, emulando un caso en el que los 200 GB iniciales no se modificaron, la próxima vez que crees una instantánea se te cobrarán 5 GB adicionales de almacenamiento de instantáneas para la segunda instantánea.
Optimización gratuita de los costos de la nube para toda la vida
Por qué las empresas siguen pagando después de eliminar una instancia en AWS
Lo siguiente que hay que recordar es que cuando se elimina una instancia en AWS, el volumen de esta instancia también se elimina, pero las instantáneas permanecen en la nube. Por lo tanto, quedan huérfanas y suelen perderse entre las demás. Sin embargo, todavía hay que pagar por ellas.
Como en el resto de servicios de AWS, los precios también varían de una región a otra. El precio medio, sin embargo, es de aproximadamente 0,05 dólares por GB-mes de datos almacenados. Algunos dirán que pagar esto no es mucho, y puede que tenga razón; pero aquí es donde viene el principal problema: cuantas más instantáneas tengas, más alta será tu factura.
Obviamente, la solución óptima a este problema es disponer de una política que describa cómo se almacenan y retienen las instantáneas y scripts no utilizados, para luego encontrarlos y limpiarlos.
Cómo encontrar y eliminar las instantáneas huérfanas y no utilizadas
El proceso de búsqueda de instantáneas huérfanas es un poco complejo. La razón de la complejidad es que no solo hay que obtener la lista de instantáneas, sino también la lista de volúmenes/AMIs y comprobar si las instantáneas están vinculadas o no a volúmenes e imágenes concretas.
Desde la consola de AWS:
La consola de AWS es bastante pobre a la hora de identificar si una instantánea está relacionada con alguna AMI o volumen existente. Por ejemplo, aunque se elimine un volumen de la nube, el campo Volume ID de la página de instantáneas seguirá teniendo el valor original, pero aun así se puede utilizar la página de instantáneas para eliminar las instantáneas innecesarias, como se indica a continuación:
Desde la CLI de AWS:
Para obtener la lista de instantáneas no vinculadas a ningún volumen, haz lo siguiente:
ORPHANED_SNAPSHOT_IDS=$(comm -23 <(aws ec2 describe-snapshots --owner-ids $AWS-ACCOUNT-ID --query 'Snapshots[*].SnapshotId' --output text | tr '\t' '\n' | ordenar) <(aws ec2 describe-volumes --query 'Volumes[*].SnapshotId' --output text | tr '\t' '\n' | sort | uniq))
Para obtener la lista de instantáneas no vinculadas a ninguna AMI, haz lo siguiente:
ORPHANED_SNAPSHOT_IDS=$(comm -23 <(aws ec2 describe-snapshots --owner-ids $AWS_ACCOUNT_ID --query 'Snapshots[*].SnapshotId' --output text | tr '\t' '\n' | sort) <( aws ec2 describe-images --filters Nombre=estado,Valores=disponible --propietarios $AWS_ACCOUNT_ID --query "Images[*].BlockDeviceMappings[*].Ebs.SnapshotId" --texto de salida | tr '\t' '\n ' | ordenar | uniq))
Utiliza el bucle de shell normal para eliminar las instantáneas de los volúmenes y las AMI:
para snapshot_id en $ORPHANED_SNAPSHOT_IDS; hacer eco "aws ec2 delete-snapshot --snapshot-id $snapshot_id"; hecho
Conclusión
Un equipo de ingenieros de una empresa suele crear docenas de copias instantáneas de volúmenes de AWS a diario. Las instantáneas de EBS se han convertido en una opción popular para realizar backups y restaurar datos en Amazon EC2. Sin embargo, pueden surgir algunos problemas al eliminar instancias, y muchas empresas siguen pagando por ellas.
Las formas de identificar y eliminar las instantáneas huérfanas y no utilizadas, tal y como se describe en el artículo, te ayudarán a evitar el despilfarro, a alcanzar los objetivos de optimización, a reducir la factura de la nube y a dar los primeros pasos para implantar una metodología FinOps en tu empresa.
Optimización gratuita de costos en la nube. Toda la vida → Apúntate
Las direcciones IP elásticas en Amazon EC2 son gratuitas, pero solo si se aplican las siguientes reglas. Obtén más detalles sobre las reglas de uso de las direcciones IP elásticas en Amazon EC2 y comienza a reducir el gasto en la nube de tu empresa → 'Cómo liberar las IP elásticas en Amazon EC2'.