Przejdź do treści

Jak znaleźć dyski gp2 w chmurze AWS | Lambda & CLI tutorial

How to find all gp2 volumes in all regions 2023 aws lambda and cli

Cześć, w tym artykule pokażę Ci, jak za pomocą funkcji Lambda i CLI znaleźć wszystkie dyski (volume) typu gp2 we wszystkich regionach. Dlaczego warto to zrobić? Dlatego że gp3 są w większość przypadków szybsze, bardziej wydajne i oczywiście tańsze 🙂

Trochę o gp2 i gp3 pisałem już w artykule Amazon EBS Volumes i gp3 – możesz zaoszczędzić do 20% (lepczynski.it). Znajdziesz tam także prosty sposób na zmianę typu dysku.

Zazwyczaj domyślnym typem dysku jest gp2. Jeśli zapomniałeś zmienić typ na inny, to volume tworzony jest właśnie w domyślnym formacie, czyli gp2. Jeśli masz mało dysków, to możesz sprawdzić wszystkie dyski za pomocą konsoli po kolei, we wszystkich regionach. Jednak dla tych, którzy mają dużo dysków i tych, co lubią automatyzację, przygotowałem poniższy tutorial. Dzięki niemu upewnisz się, czy nie zapodział się w jakimś regionie dysk w niechcianym typie.

Funkcja Lambda

lambda find gp2
lambda – find gp2

Jeśli lubisz funkcję lambda, to poniżej znajdziesz kod, który pozwoli na odszukanie wszystkich dysków typu gp2 we wszystkich regionach za jednym razem i wypisze ich ID. Otrzymujesz konkretną listę, z którą możesz działać dalej.

import json
import boto3

ec2_client = boto3.client('ec2')
regions = [region['RegionName'] for region in ec2_client.describe_regions()['Regions']]
list_all_gp2_volumes = list()

volume_types = ['gp2']

def lambda_handler(event, context):
    
    for region in regions:
        ec2_client = boto3.client('ec2', region)
        gp2_volumes = ec2_client.describe_volumes(
            Filters=[
                {
                    'Name': 'volume-type',
                    'Values': volume_type
                },
            ]
        )
        if gp2_volumes:
            for gp2_volume in gp2_volumes['Volumes']:
                    print("Region: %s" % region)
                    print(gp2_volume['VolumeId'])
                    list_all_gp2_volumes.append(gp2_volume['VolumeId'])

    return list_all_gp2_volumes

Co ważne zmieniając parametr volume_type możesz poszukać także innych typów dysków. Możesz także dodać po przecinku kolejne typy. Dzięki temu za jednym uruchomieniem funkcji znajdziesz wszystkie dyski określonych typów we wszystkich regionach. Poniżej lista dostępnych typów dla EBS volumes:

  • gp2
  • gp3
  • io1
  • io2
  • st1
  • sc1
  • standard

Pamiętaj tylko by dać swojej funkcji lambda odpowiednie uprawnienia. Najlepiej stworzyć dedykowaną rolę tylko do tego celu z odpowiednimi uprawnieniami np.:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        }
    ]
}

CLI – aws ec2 describe-volumes

cli find gp2
cli – find gp2

Jeśli preferujesz używanie CLI, to za pomocą jednego polecenia możesz sprawdzić jakiego typu dyski posiadasz w danym regionie. Polecenie przedstawione poniżej wypisze tylko VolumeId dysków (volume) typu gp2 z regionu eu-central-1.

aws ec2 describe-volumes \
    --region eu-central-1 \
    --filters Name=volume-type,Values=gp2 \
    --query "Volumes[*].{ID:VolumeId}"

Podsumowanie

Mam nadzieję, że przyda Ci się wiedza zdobyta w tym artykule. Dzięki niej możesz usprawnić swoją chmurę, obniżyć rachunki, a nawet dostać podwyżkę. Zmieniając typ dysku, możesz zaoszczędzić prawdziwe pieniądze. Prawda jest taka, że zwiększając swoją wiedzę, zwiększasz swoją wartość na rynku pracy:)

Już niedługo kolejne porady pozwalające zautomatyzować pracę, usprawnić ją i obniżyć koszty używania chmury. Zajrzyj też na mój kanał YouTube, znajdziesz tam kolejne chmurowe porady.

Amazon EBS Volumes i gp3 – możesz zaoszczędzić do 20%
Poradnik dla początkujących. Jak zacząć przygodę z chmurą AWS