Удалите неиспользуемые тома EBS (Elastic Block Storage) на AWS с помощью лямбда-функции.
На этой странице
- Предварительные требования
- Войти в AWS
- Создайте лямбда-функцию для удаления неиспользуемых томов EBS.
Amazon Elastic Block Store (EBS) — это простой в использовании высокопроизводительный сервис блочного хранения. Это похоже на внешний диск, который можно подключить к экземпляру EC2 и использовать для хранения на нем наших данных. Если тома EBS не используются, не нужны и по-прежнему доступны в учетной записи, AWS будет взимать плату за них без необходимости. Чтобы немного сэкономить, мы увидим функцию Lambda, которую можно использовать для поиска и удаления таких неиспользуемых томов EBS.
Предпосылки
- Аккаунт AWS (создайте, если у вас его нет).
- Основные сведения об инстансе EC2. Нажмите здесь, чтобы узнать больше об инстансе EC2.
- Основное понимание Lambda. Нажмите здесь, чтобы узнать больше о функциях Lambda.
Что мы будем делать?
- Войдите в AWS.
- Создайте лямбда-функцию для удаления неиспользуемых томов EBS.
Войти в АВС
- Нажмите здесь, чтобы перейти на страницу входа в 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.