Поиск по сайту:

Удалите неиспользуемые тома EBS (Elastic Block Storage) на AWS с помощью лямбда-функции.


На этой странице

  1. Предварительные требования
  2. Войти в AWS
  3. Создайте лямбда-функцию для удаления неиспользуемых томов EBS.

Amazon Elastic Block Store (EBS) — это простой в использовании высокопроизводительный сервис блочного хранения. Это похоже на внешний диск, который можно подключить к экземпляру EC2 и использовать для хранения на нем наших данных. Если тома EBS не используются, не нужны и по-прежнему доступны в учетной записи, AWS будет взимать плату за них без необходимости. Чтобы немного сэкономить, мы увидим функцию Lambda, которую можно использовать для поиска и удаления таких неиспользуемых томов EBS.

Предпосылки

  1. Аккаунт AWS (создайте, если у вас его нет).
  2. Основные сведения об инстансе EC2. Нажмите здесь, чтобы узнать больше об инстансе EC2.
  3. Основное понимание Lambda. Нажмите здесь, чтобы узнать больше о функциях Lambda.

Что мы будем делать?

  1. Войдите в AWS.
  2. Создайте лямбда-функцию для удаления неиспользуемых томов EBS.

Войти в АВС

  1. Нажмите здесь, чтобы перейти на страницу входа в AWS.

Когда мы перейдем по приведенной выше ссылке, мы увидим следующую веб-страницу, где нам необходимо войти в систему, используя наши данные для входа.

После успешного входа в AWS мы увидим главную консоль со всеми перечисленными сервисами.

Создайте лямбда-функцию для удаления неиспользуемых томов EBS.

Нажмите «Услуги» в левом верхнем углу, найдите «EC2» и перейдите на главную панель инструментов EC2.

На главной панели EC2 прокрутите вниз и нажмите «Тома» в разделе «Эластичное блочное хранилище».

Здесь вы увидите все тома EBS, которые у вас есть в выбранном регионе. Тома со статусом «доступен» являются неиспользуемыми томами и не привязаны ни к одному из экземпляров EC2. Эти тома можно безопасно удалить, если на них нет важных данных или на них нет данных.

Тома можно удалять из этой консоли, но если есть сотни-тысячи неиспользуемых томов, лучше использовать некоторую автоматизацию.

Чтобы автоматизировать процесс удаления неиспользуемых томов, мы можем использовать «Лямбда-функции». Нажмите на \Услуги\ в левом верхнем углу экрана и найдите \Лямбда\.

На главной панели Lambda нажмите «Создать функцию».

Создайте функцию с помощью \Автор с нуля\, назовите создаваемую функцию и выберите Runtime. Здесь мы увидим лямбда-функцию со средой выполнения Python для автоматизации процесса удаления неиспользуемых томов EBS. Нажмите «Создать функцию», чтобы продолжить.

Вы увидите следующий экран с примером кода функции.

Используйте следующий код, чтобы удалить неиспользуемые тома EBS. Удалите существующий код функции и вставьте следующий код в поле кода функции. Если вы не хотите удалять определенные неиспользуемые тома EBS, пометьте их как \Имя: DND\. Следующий код не удалит такие тома.

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)

Или вы можете указать список неиспользуемых томов EBS, которые необходимо удалить.

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)

Сохраните функцию, нажав на кнопку Сохранить.

Прежде чем мы выполним/проверим код, нам нужно создать событие. Мы создадим простое событие. Чтобы создать событие, нажмите \Выбрать тестовое событие\ -> Настроить тестовое событие.

На следующем экране назовите событие, сохраните шаблон события как есть и нажмите «Создать».

После того, как код и событие готовы, последнее, что осталось сделать перед тем, как мы проверим или выполним функцию, — это назначить необходимые политики лямбда-функции. Чтобы назначить необходимую политику, прокрутите вниз и нажмите «Просмотреть роль удаления-неиспользуемых-ebs-volumes-role-ruemgr4x» и откройте ее в новом окне.

Нажмите «Прикрепить политику», чтобы прикрепить требуемую политику к этой роли IAM.

Найдите EC2 и прикрепите политику AmazonEC2FullAccess. Эта политика предоставит полный доступ к функции Lambda на инстансах EC2.

Теперь мы готовы выполнить функцию. Нажмите на \Тест\.

После выполнения функции вы можете увидеть журналы в Execution Result.

Вы можете подтвердить, был ли удален неиспользуемый том EBS или нет, перейдя на главную панель управления экземпляра EC2.

Здесь, как вы видите, неиспользуемый том EBS больше не доступен в консоли, что означает, что он был успешно удален функцией Lambda.

В этой статье мы увидели, как написать лямбда-функцию для удаления неиспользуемых томов EBS. Это может помочь нам сэкономить дополнительные расходы на учетную запись AWS.