Xóa các khối lượng EBS (Elastic Block Storage) chưa sử dụng trên AWS bằng cách sử dụng hàm Lambda

theanh

Administrator
Nhân viên
Amazon Elastic Block Store (EBS) là dịch vụ lưu trữ khối dễ sử dụng, hiệu suất cao. Nó giống như một đĩa ngoài có thể được gắn vào EC2 Instance và được sử dụng để lưu trữ dữ liệu của chúng tôi trên đó. Nếu EBS Volumes không được sử dụng và không cần thiết nhưng vẫn khả dụng trong tài khoản, thì bạn sẽ bị AWS tính phí cho chúng một cách không cần thiết. Để tiết kiệm chi phí, chúng ta sẽ xem hàm Lambda có thể được sử dụng để tìm và xóa các EBS Volume không sử dụng như vậy.

Điều kiện tiên quyết​

  1. Tài khoản AWS (Tạo nếu bạn chưa có).
  2. Hiểu biết cơ bản về EC2 Instance, nhấp vào đây để biết thêm về EC2 Instance.
  3. Hiểu biết cơ bản về Lambda,nhấp vào đây để biết thêm về Lambda Functions.

Cái gì chúng ta sẽ làm gì?

  1. Đăng nhập vào AWS.
  2. Tạo một hàm Lambda để xóa các khối lượng EBS chưa sử dụng.

Đăng nhập vào AWS​

  1. Nhấp vào đây để đến Trang đăng nhập AWS.
Khi chúng ta nhấp vào liên kết trên, chúng ta sẽ thấy một trang web như sau, tại đó chúng ta được yêu cầu đăng nhập bằng thông tin đăng nhập của mình.



Sau khi đăng nhập thành công vào AWS, chúng ta sẽ thấy bảng điều khiển chính với tất cả các dịch vụ được liệt kê.


Tạo Hàm Lambda để xóa các Ổ đĩa EBS Không sử dụng.​

Nhấp vào "Dịch vụ" ở trên cùng bên trái, tìm kiếm "EC2" và đi đến bảng điều khiển chính của EC2.



Trên bảng điều khiển chính của EC2, cuộn xuống và nhấp vào "Ổ đĩa" bên dưới "Elastic Khối Lưu trữ".



Tại đây, bạn sẽ thấy tất cả các EBS Volume mà bạn có trong vùng đã chọn. Các Volume có trạng thái "available" là các Volume chưa sử dụng và không được đính kèm vào bất kỳ EC2 Instance nào. Các Volume này có thể xóa an toàn nếu chúng không có dữ liệu quan trọng hoặc không có dữ liệu trên đó.

Có thể xóa các Volume khỏi bảng điều khiển này, nhưng nếu có hàng trăm-1000 các Volume chưa sử dụng, tốt hơn là nên áp dụng một số biện pháp tự động hóa.



Để tự động hóa quy trình xóa các Volume chưa sử dụng, chúng ta có thể sử dụng "Lambda Functions". Nhấp vào "Dịch vụ" ở góc trên bên trái màn hình và tìm kiếm "Lambda".



Trên bảng điều khiển chính của Lambda, nhấp vào "Tạo hàm".



Tạo hàm bằng "Author from Scratch", đặt tên cho hàm cần tạo và chọn Runtime. Ở đây, chúng ta sẽ thấy một hàm Lambda với Python Runtime để tự động hóa quy trình xóa các EBS Volume chưa sử dụng. Nhấp vào "Tạo hàm" để tiếp tục.



Bạn sẽ thấy màn hình sau với mã hàm mẫu.



Sử dụng mã sau để xóa các EBS Volume chưa sử dụng. Xóa mã hàm hiện có và dán mã sau vào hộp mã hàm. Nếu bạn không muốn xóa các EBS Volume chưa sử dụng cụ thể, hãy gắn thẻ chúng là "Tên: DND". Mã sau đây sẽ không xóa các ổ đĩa như vậy.
Mã:
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 ('Đã xóa ' +vid)
 continue
 for tag in vol.tags:
 if tag['Key'] == 'Name':
 value=tag['Value']
 if value != 'DND' và vol.state=='available':
 vid=vol.id
 v=ec2.Volume(vol.id)
 v.delete()
 print ('Đã xóa ' +vid)


Hoặc bạn có thể chỉ định danh sách các Ổ đĩa EBS chưa sử dụng cần xóa.


Mã:
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 ('Đã xóa ' +vid)
Lưu hàm bằng cách nhấp vào Lưu button.



Trước khi thực thi/kiểm tra mã, chúng ta cần tạo một sự kiện. Chúng ta sẽ tạo một sự kiện đơn giản. Để tạo sự kiện, hãy nhấp vào "Chọn sự kiện kiểm tra" - > Cấu hình sự kiện kiểm tra.



Trên màn hình tiếp theo, hãy đặt tên cho sự kiện và giữ nguyên mẫu sự kiện, sau đó nhấp vào "Tạo".



Sau khi mã và sự kiện đã sẵn sàng, việc cuối cùng còn lại trước khi chúng ta kiểm tra hoặc thực thi hàm là gán các chính sách cần thiết cho Hàm Lambda. Để chỉ định chính sách bắt buộc, hãy cuộn xuống và nhấp vào "Xem vai trò delete-unused-ebs-volumes-role-ruemgr4x" và mở vai trò đó trong cửa sổ mới.



Nhấp vào "Đính kèm Chính sách" để đính kèm chính sách bắt buộc vào Vai trò IAM này.



Tìm kiếm EC2 và đính kèm chính sách "AmazonEC2FullAccess''. Chính sách này sẽ cấp quyền truy cập đầy đủ vào Hàm Lambda trên các Phiên bản EC2.



Bây giờ, chúng ta đã sẵn sàng để thực thi Hàm. Nhấp vào "Kiểm tra".

Sau khi thực thi hàm, bạn có thể xem nhật ký trong Kết quả thực thi.



Bạn có thể xác nhận xem Ổ đĩa EBS chưa sử dụng đã/đã bị xóa hay chưa bằng cách vào bảng điều khiển chính của EC2 Ví dụ.



Ở đây, như bạn thấy, EBS Volume chưa sử dụng không còn khả dụng trong bảng điều khiển nữa, nghĩa là nó đã bị Hàm Lambda xóa thành công.



Trong bài viết này, chúng ta đã thấy cách viết Hàm Lambda để xóa các EBS Volume chưa sử dụng. Điều này có thể giúp chúng ta tiết kiệm thêm một số chi phí cho Tài khoản AWS.
 
Back
Bên trên