AWS Lambda 및 AWS EventBridge를 사용한 AWS 인프라 유지 관리 [X일 후 EC2 인스턴스 ebs 스냅샷 정리] [2부]
13867 단어 programmingserverlessawspython
내용물
Architecture diagram and high level overview of all the solutions
AWS IAM permissions
요약
Lambda 및 EventBridge와 같은 AWS 서비스를 활용하여 일정에 따라 AWS 인프라에서 하우스키핑을 자동으로 수행하는 방법에 대한 4부작 자습서PART-2에 오신 것을 환영합니다. 지난 번에는 Python, AWS Lambda 및 AWS eventbridge를 사용하여 인스턴스의 EBS 스냅샷을 생성하는 방법에 대해 이야기했습니다. 이 게시물에서는 이전 EBS 스냅샷이 자동으로 정리되는 두 번째 부분을 빌드하는 방법에 대해 설명합니다. '이전'은 일 수(이 경우 7)로 정의됩니다.
[PART-1] 모든 리전에서 모든 AWS EC2 인스턴스의 EBS 볼륨 스냅샷을 생성하고 태그를 지정합니다. 게시물에 대한 링크를 찾을 수 있습니다.
[PART-2] X일보다 오래된 모든 리전에서 EBS 볼륨 스냅샷을 정리합니다.
모든 솔루션의 아키텍처 다이어그램 및 높은 수준의 개요
아키텍처 다이어그램
EC2 인스턴스 일일 ebs 볼륨 스냅샷
모든 리전의 모든 인스턴스와 관련 볼륨을 나열하고 여기에서 EBS 스냅샷을 생성하겠습니다. 또한 이 스냅샷에 사용자 정의 태그를 추가할 것입니다.
X일 후 매일 EC2 인스턴스 ebs 스냅샷 정리
우리 지역에서 소유하고 있는 모든 EBS 스냅샷을 나열한 다음 X일보다 오래된 스냅샷을 삭제하겠습니다.
AWS IAM 권한
Create an IAM role 다음 권한 및 신뢰 정책을 사용합니다.
권한
다음을 허용하는 권한 정책 템플릿을 역할에 연결합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:CreateLogGroup",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateSnapshot",
"ec2:CreateTags",
"ec2:DeleteSnapshot",
"ec2:Describe*",
"ec2:ModifySnapshotAttribute",
"ec2:ResetSnapshotAttribute",
"ec2:DeleteVolume",
"ec2:DeregisterImage"
],
"Resource": "*"
}
]
}
신뢰 관계
IAM 역할에 대한 Lambda 서비스 액세스를 허용합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
AWS EventBridge 및 람다
AWS Lambda을 사용하여 인프라 유지 관리를 실행하기 위해 Python 코드를 실행할 것입니다.
일정에 따라 람다를 통해 코드를 실행하기 위해 AWS EventBridge을 사용할 것입니다. cron 식을 사용하여 일정을 정의하여 매일 자정에 현지 시간대를 기준으로 트리거할 것입니다.
AWS EventBridge 서비스 ➡️ 규칙 ➡️ 규칙 생성으로 이동하여 EventBridge 규칙을 생성할 수 있습니다. 우리가 사용할 cron 표현식은 cron(30 18 * * ? *)입니다. 저는 인도에 거주하고 있으며 이것은 자정 IST 시간대(GMT 18:30:00)로 변환됩니다.
AWS Cloudwatch logs을 사용하여 람다 실행의 데이터를 기록하겠습니다.
EC2 인스턴스 ebs 스냅샷 삭제 솔루션
워크플로 및 코드
> 🕛 자정 ➡️ AWS EventBridge 규칙 트리거 ➡️ Lambda 코드 실행 ➡️ EBS 스냅샷 확인, 생성된 지 7일 이상 지난 경우 삭제 ➡️ Cloudwatch 로그에 기록
boto3 설치
python3 -m pip install boto3
람다 코드
ec2_client = boto3.client('ec2')
def get_regions(ec2_client):
return [region['RegionName'] for region in ec2_client.describe_regions()['Regions']]
ec2_client = boto3.client('ec2',region_name=region)
def get_snapshots_from_a_region(ec2_client,account_id):
return (ec2_client.describe_snapshots(OwnerIds=[account_id])['Snapshots'])
def get_age_of_snapshot(snap):
return ((datetime.now() - snap['StartTime'].replace(tzinfo=None)).days)
def delete_snapshot_from_a_region(ec2_client,snap):
ec2_client.delete_snapshot(SnapshotId=snap['SnapshotId'])
Cloudwatch 로그
다음으로
X일 후 연결되지 않은 ebs 볼륨을 정리하는 방법에 대해 이야기할 이 튜토리얼의
Reference
이 문제에 관하여(AWS Lambda 및 AWS EventBridge를 사용한 AWS 인프라 유지 관리 [X일 후 EC2 인스턴스 ebs 스냅샷 정리] [2부]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/soumyajyotibiswas/aws-infrastrucutre-maintenance-using-aws-lambda-and-aws-eventbridge-ec2-instance-ebs-snapshot-cleanup-after-x-days-part-2-53bo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)