GNU/Linux >> Tutoriales Linux >  >> Linux

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 bloques 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 de AWS (cree si no tiene una).
  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. Haga 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 "Almacenamiento de bloque elástico" ".

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 cientos o miles de sin usar volúmenes, es mejor tener algo de automatización.

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 muestra.

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 "Probar".

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

Puede confirmar si el volumen de EBS no utilizado se eliminó o no yendo al 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 eliminó con éxito.

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.


Linux
  1. Cree una instancia EC2 en AWS usando Terraform

  2. Bash Beginner Series #9:Uso de funciones en Bash

  3. Configuración de almacenamiento en bloque en servidores Linux

  4. Configuración de almacenamiento en bloque en servidores Windows

  5. ¿Usando el reloj para ejecutar una función repetidamente en Bash?

Administre las colas de AWS SQS con aws-cli

Cómo administrar AWS Cloudwatch usando aws-cli

Cree un depósito S3 en AWS con Terraform

Cómo crear un depósito S3 usando Python Boto3 en AWS

Cómo crear un evento en AWS Cloudwatch para activar una función Lambda

Cómo bloquear un puerto usando un firewall en Linux