>백엔드 개발 >파이썬 튜토리얼 >AWS 비용 최적화: Lambda를 사용하여 사용되지 않은 EBS 스냅샷 정리 자동화

AWS 비용 최적화: Lambda를 사용하여 사용되지 않은 EBS 스냅샷 정리 자동화

DDD
DDD원래의
2024-12-19 01:18:10505검색

EBS 스냅샷 관리를 위한 비용 절감형 Lambda 기능 구축 및 배포에 대한 단계별 가이드

? 소개

DevOps의 세계에 오신 것을 환영합니다! 오늘은 불필요한 EBS 스냅샷 관리라는 AWS 사용자가 직면한 일반적인 문제를 해결하는 흥미로운 비용 최적화 프로젝트에 대해 알아보겠습니다. 이 프로젝트에서는 자동으로 정리하는 Python 프로그램을 만듭니다.

  • 모든 볼륨에 연결되지 않은 스냅샷.
  • 더 이상 실행 상태가 아닌 인스턴스의 스냅샷

이 실습 프로젝트는 AWS 스토리지 비용을 절감할 수 있는 좋은 방법일 뿐만 아니라 AWS의 리소스 활용도에 대한 이해를 강화할 수 있는 기회이기도 합니다. 그 과정에서 AWS 리소스와 상호 작용하고 필요에 맞게 조작하기 위해 Python용 AWS SDK인 boto3를 살펴보겠습니다.

비용 절감 조치를 자동화하고 DevOps 기술을 향상하기 위한 여정을 시작해 보세요!


? 사전 요구 사항

비용 최적화 프로젝트를 구축하기 전에 필요한 도구와 지식이 갖추어져 있는지 확인하겠습니다. 필요한 것은 다음과 같습니다.

  • Python: 시스템에 Python이 설치되어 있는지 확인하세요. 버전 3.7 이상을 권장합니다.
  • 기본 Python 지식: Python 기본 사항에 익숙하면 스크립트를 효과적으로 이해하고 구현하는 데 도움이 됩니다.
  • AWS 계정: EC2 및 EBS 스냅샷과 같은 리소스와 상호 작용하려면 AWS 계정에 액세스해야 합니다.
  • EC2에 대한 기본 이해: EC2 대시보드와 스냅샷을 다룰 것이므로 EC2 인스턴스에 대한 기본적인 이해가 중요합니다.
  • AWS CLI: 다음 명령을 사용하여 시스템에 AWS CLI를 설치하고 구성합니다.
aws configure

이 단계에서는 AWS 서비스와 원활한 통신이 가능하도록 액세스 키, 리전 및 출력 형식을 설정합니다.

이러한 전제 조건을 모두 충족하면 프로젝트를 진행할 준비가 된 것입니다!


? 프로젝트 시작

이 프로젝트의 소스 코드는 내 GitHub 저장소에서 확인할 수 있습니다.

? GitHub Repo: AWS 클라우드 비용 최적화

Lambda 함수를 생성하고 구성하려면 다음 단계를 따르세요.

Lambda 함수 생성:

  • AWS 계정에서 Lambda 콘솔로 이동합니다.
  • 함수 만들기를 클릭하고 처음부터 작성 옵션을 선택하세요.
  • 함수 이름(예: ebs-volume-check)을 제공하고 Python 3.12를 런타임으로 선택합니다.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

코드 추가:

  • AWS 콘솔의 코드 편집기에서 Lambda_function.py 파일을 엽니다.
  • GitHub 저장소에서 script.py의 내용을 복사하여 편집기에 붙여넣습니다. 참조용 코드 조각은 다음과 같습니다.
aws configure

코드 배포:

  • 변경 사항을 저장하고 적용하려면 배포 버튼을 클릭하세요.

시간 초과 늘리기:

  • 기본적으로 Lambda 함수의 제한 시간은 3초로 이 작업에는 충분하지 않습니다.
  • 구성 탭으로 이동하여 일반 구성을 선택한 후 제한 시간을 10초로 늘립니다.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

기능 테스트:

  • 더미 데이터로 테스트 이벤트를 생성하고 함수를 호출합니다.
  • 테스트 중에 UnauthorizedOperation 오류가 발생합니다.

이 오류는 Lambda 함수에 필수 권한이 ​​부족하기 때문에 발생합니다. 이에 대해서는 다음 단계에서 다루겠습니다.


? 필수 권한 추가

Lambda 함수가 EC2 리소스와 상호 작용할 수 있도록 하려면 해당 서비스 역할에 특정 권한을 추가해야 합니다. 전체 액세스 권한을 부여하는 대신 최소 권한의 원칙에 따라 함수에 필요한 권한만 부여할 것입니다. 다음 단계를 따르세요.

서비스 역할 찾기:

  • Lambda 함수의 구성 탭으로 이동합니다.
  • 권한 섹션에서 해당 기능과 관련된 서비스 역할을 찾습니다. 역할 이름이 표시됩니다.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

IAM에서 서비스 역할 열기:

  • 서비스 역할 이름을 클릭하면 IAM 콘솔로 리디렉션됩니다.

인라인 정책 만들기:

  • IAM 콘솔의 권한 탭에서 권한 추가를 클릭하고 인라인 정책 생성을 선택합니다.
  • 다음과 같이 정책을 구성합니다.
  • 서비스: EC2를 선택하세요.
  • 작업: 다음 권한만 선택하세요:
  • 스냅샷 설명
  • 인스턴스 설명
  • 볼륨 설명
  • 스냅샷 삭제
  • 리소스: 단순화를 위해 모든 리소스에 적용할 권한을 설정합니다. 더 엄격한 제어가 필요한 경우 리소스 ARN을 지정하세요.

정책 검토 및 할당:

  • 다음을 클릭하고 정책 세부정보를 검토하세요.
  • 정책에 이름을 지정합니다(예: ebs-permissions).
  • 정책 생성을 클릭하여 서비스 역할에 적용하세요.

ebs-permissions 정책은 다음과 같습니다.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

이 인라인 정책이 추가되면 Lambda 함수는 스냅샷, 볼륨 및 인스턴스를 효과적으로 설명하고 삭제하는 데 필요한 모든 권한을 갖게 됩니다.

권한이 설정되었으니 다음 단계에서 기능을 다시 테스트해 보겠습니다!


? Lambda 함수 테스트

권한이 설정되었으면 이제 실제 시나리오를 사용하여 Lambda 기능을 테스트할 차례입니다. 기능이 어떻게 수행되는지 확인하려면 다음 단계를 따르세요.

1. 첫 번째 사용 사례: 삭제된 인스턴스의 스냅샷 정리

EC2 인스턴스 생성:

  • t2.micro 인스턴스를 시작하고 이름을 test-ebs로 지정합니다.
  • 기본 AMI를 사용하고 인스턴스에 루트 볼륨이 있는지 확인하세요.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

스냅샷 만들기:

  • EC2 대시보드로 이동하여 test-ebs에 연결된 볼륨에서 스냅샷을 생성하세요.
  • 스냅샷 생성이 완료될 때까지 기다립니다.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

인스턴스 삭제:
스냅샷이 준비되면 test-ebs 인스턴스를 종료합니다. 이로 인해 존재하지 않는 인스턴스의 스냅샷이 남게 되며 이제 중복됩니다.

Lambda 함수 실행:

  • AWS 콘솔에서 Lambda 함수로 이동하여 함수를 테스트합니다.
  • 이 기능은 실행 중인 인스턴스에 스냅샷이 연결되지 않았음을 감지하고 삭제합니다.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

EC2 대시보드의 스냅샷 섹션에서 삭제를 확인하세요.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

2. 두 번째 사용 사례: 삭제된 볼륨의 스냅샷 정리

EBS 볼륨 생성:

  • 1GB gp3 EBS 볼륨을 생성하고 이름을 ebs-volume으로 지정합니다.

스냅샷 만들기:

  • EBS 볼륨 섹션으로 이동하여 ebs-volume에서 스냅샷을 생성하세요.
  • 스냅샷이 생성될 때까지 기다립니다.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

볼륨 삭제:
스냅샷이 준비되면 ebs-volume을 삭제합니다. 이로 인해 어떤 볼륨에도 연결되지 않은 스냅샷이 남게 됩니다.

Lambda 함수 실행:

  • Lambda 기능을 다시 테스트해 보세요.
  • 이 기능은 스냅샷이 어떤 볼륨에도 연결되어 있지 않음을 식별하고 삭제합니다.
  • EC2 대시보드의 스냅샷 섹션에서 삭제를 확인하세요.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

이 두 가지 시나리오를 성공적으로 처리함으로써 Lambda 기능은 중복된 EBS 스냅샷을 식별하고 정리하여 비용을 절감하고 리소스 관리를 간소화하는 능력을 보여줍니다.


? 결론

축하합니다! ? Python과 Lambda를 사용하여 AWS에서 비용 최적화 솔루션을 구축했습니다. 이 프로젝트에서는 더 이상 목적에 부합하지 않는 중복 EBS 스냅샷을 식별하고 정리하여 리소스 관리를 개선하는 동시에 클라우드 비용을 절감하는 방법을 살펴보았습니다.

다음은 우리가 달성한 성과를 간단히 요약한 것입니다.

  • 처음부터 Lambda 함수를 생성하고 구성하는 방법을 배웠습니다. AWS의 boto3 라이브러리를 활용하여 EC2 리소스와 프로그래밍 방식으로 상호 작용했습니다.
  • AWS 서비스에 대한 안전한 액세스를 보장하기 위해 최소 권한의 원칙을 따랐습니다.
  • 첨부되지 않은 스냅샷을 정리하는 기능의 효율성을 검증하기 위해 실제 시나리오를 테스트했습니다.

이 프로젝트는 클라우드 환경에서 리소스 최적화의 중요성을 강조하고 Python을 사용하여 AWS 작업을 자동화하는 실무 경험을 제공합니다.

이 기능을 자유롭게 맞춤설정하고 더욱 향상해 보세요. 예를 들어 CloudWatch 규칙을 설정하여 함수를 주기적으로 트리거하거나 논리를 확장하여 추가 정리 시나리오를 처리할 수 있습니다.

따라주셔서 감사합니다. 더욱 흥미로운 DevOps 및 클라우드 프로젝트를 기대해 주세요! ?

? 더 많은 정보를 얻을 수 있는 블로그를 원하시면 Hashnode, X(Twitter) 및 LinkedIn에서 저를 팔로우하세요.

그때까지 즐거운 학습 되세요! ?

위 내용은 AWS 비용 최적화: Lambda를 사용하여 사용되지 않은 EBS 스냅샷 정리 자동화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.