Elimine vol√ļmenes de EBS (almacenamiento de bloques el√°sticos) no utilizados en AWS mediante una funci√≥n Lambda

Elimine vol√ļmenes de EBS (almacenamiento de bloques el√°sticos) no utilizados en AWS mediante una funci√≥n Lambda

Amazon Elastic Block Store (EBS) es un servicio de almacenamiento en bloque de alto rendimiento y f√°cil de usar. Es como un disco externo que puede conectarse a una instancia EC2 y usarse para almacenar nuestros datos en √©l. Si los vol√ļmenes de EBS no est√°n en uso y no son necesarios y a√ļn est√°n disponibles en la cuenta, AWS le cobrar√° por ellos innecesariamente. Para ahorrar algo de costo, veremos la funci√≥n Lambda que se puede usar para buscar y eliminar dichos vol√ļmenes de EBS no utilizados.

Requisitos previos

  1. Cuenta AWS (Crear si no tienes uno).
  2. Comprensión básica de la instancia EC2, haga clic aquí para obtener más información sobre la instancia EC2.
  3. Comprensión básica de Lambda, haga clic aquí para obtener más información sobre las funciones de Lambda.

Qué haremos?

  1. Inicie sesión en AWS.
  2. Cree una funci√≥n Lambda para eliminar vol√ļmenes de EBS no utilizados.

Iniciar sesión en AWS

  1. Hacer clic aquí para ir a la página de inicio de sesión de AWS.

Cuando hagamos clic en el enlace anterior, veremos una página web como la siguiente donde debemos iniciar sesión con nuestros datos de inicio de sesión.

Una vez que iniciemos sesión en AWS con éxito, veremos la consola principal con todos los servicios enumerados.

Cree una funci√≥n Lambda para eliminar vol√ļmenes de EBS no utilizados.

Haga clic en ¬ęServicios¬Ľ en la parte superior izquierda, busque ¬ęEC2¬Ľ y vaya al panel principal de EC2.

En el tablero principal de EC2, despl√°cese hacia abajo y haga clic en ¬ęVol√ļmenes¬Ľ en ¬ęBloque el√°stico Almacenamiento¬ę.

Aqu√≠ ver√° todos los vol√ļmenes de EBS que tiene en la regi√≥n seleccionada. Los vol√ļmenes con el estado ¬ędisponible¬Ľ son vol√ļmenes sin usar y no est√°n adjuntos a ninguna de las instancias EC2. Es seguro eliminar estos vol√ļmenes si no tienen datos importantes o no tienen datos en ellos.

Los vol√ļmenes se pueden eliminar de esta consola, pero si hay 100s-1000s de no usado vol√ļmenes, es mejor tener algo de automatizaci√≥n en su lugar.

Para automatizar el proceso de eliminaci√≥n de vol√ļmenes no utilizados, podemos usar ¬ęFunciones Lambda¬Ľ. Haga clic en ¬ęServicios¬Ľ en la parte superior izquierda de la pantalla y busque ¬ęLambda¬Ľ.

En el tablero principal de Lambda, haga clic en ¬ęCrear funci√≥n¬Ľ.

Cree una funci√≥n con ¬ęAutor desde cero¬Ľ, asigne un nombre a la funci√≥n que se crear√° y elija el Tiempo de ejecuci√≥n. Aqu√≠ vamos a ver una funci√≥n Lambda con Python Runtime para automatizar el proceso de eliminaci√≥n de los vol√ļmenes de EBS no utilizados. Haga clic en ¬ęCrear funci√≥n¬Ľ para continuar.

Verá la siguiente pantalla con el código de función de ejemplo.

Utilice el siguiente c√≥digo para eliminar los vol√ļmenes de EBS no utilizados. Elimine el c√≥digo de funci√≥n existente y pegue el siguiente c√≥digo en el cuadro de c√≥digo de funci√≥n. Si no desea eliminar los vol√ļmenes de EBS no utilizados espec√≠ficos, etiqu√©telos como ¬ęNombre: DND¬Ľ. El siguiente c√≥digo no eliminar√° dichos vol√ļmenes.

import boto3
ec2 = boto3.resource('ec2',region_name='eu-west-3')
def lambda_handler(event, context):
    for vol in ec2.volumes.all():
        if  vol.state=='available':
            if vol.tags is None:
                vid=vol.id
                v=ec2.Volume(vol.id)
                v.delete()
                print ('Deleted ' +vid)
                continue
            for tag in vol.tags:
                if tag['Key'] == 'Name':
                    value=tag['Value']
                    if value != 'DND' and vol.state=='available':
                        vid=vol.id
                        v=ec2.Volume(vol.id)
                        v.delete()
                        print ('Deleted ' +vid)

O puede especificar la lista de vol√ļmenes de EBS no utilizados que deben eliminarse.

import boto3
ec2 = boto3.resource('ec2',region_name='eu-west-3')
volume_ids = ['vol-029af2107c0a0807d', ‚Äėvol-029af2107c0a08123‚Äô]
def lambda_handler(event, context):
    for volid in volume_ids:
        vid=volid
        v=ec2.Volume(vid)
        v.delete()
        print ('Deleted ' +vid)

Guarde la función haciendo clic en el botón Guardar.

Antes de ejecutar/probar el c√≥digo, necesitamos crear un evento. Vamos a crear un evento simple. Para crear un evento, haga clic en ¬ęSeleccionar un evento de prueba¬Ľ -> Configurar evento de prueba.

En la siguiente pantalla, asigne un nombre al evento y mantenga la plantilla del evento como est√° y haga clic en ¬ęCrear¬Ľ.

Una vez que el c√≥digo y el evento est√°n listos, lo √ļltimo que queda antes de probar o ejecutar la funci√≥n es asignar las pol√≠ticas requeridas a la funci√≥n Lambda. Para asignar la pol√≠tica requerida, despl√°cese hacia abajo y haga clic en ¬ęVer el rol delete-unused-ebs-volumes-role-ruemgr4x¬Ľ y √°bralo en la nueva ventana.

Haga clic en ¬ęAdjuntar pol√≠tica¬Ľ para adjuntar la pol√≠tica necesaria a este rol de IAM.

Busque EC2 y adjunte la pol√≠tica ¬ęAmazonEC2FullAccess¬Ľ. Esta pol√≠tica otorgar√° acceso total a la funci√≥n Lambda en las instancias EC2.

Ahora, estamos listos para ejecutar la Funci√≥n. Haga clic en ¬ęPrueba¬Ľ.

Una vez que ejecuta la función, puede ver los registros en Resultado de ejecución.

Puede confirmar si el volumen de EBS no utilizado se eliminó o no en el panel principal de la instancia EC2.

Aquí, como puede ver, el volumen de EBS no utilizado ya no está disponible en la consola, lo que significa que la función Lambda lo ha eliminado correctamente.

En este art√≠culo, vimos c√≥mo escribir una funci√≥n Lambda para eliminar los vol√ļmenes de EBS no utilizados. Esto puede ayudarnos a ahorrar alg√ļn costo adicional en la cuenta de AWS.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *