Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AWS 자원 정리 #64

Open
Kim-Yul opened this issue Nov 27, 2024 · 6 comments
Open

AWS 자원 정리 #64

Kim-Yul opened this issue Nov 27, 2024 · 6 comments
Assignees

Comments

@Kim-Yul
Copy link
Collaborator

Kim-Yul commented Nov 27, 2024

AWS 자원 정리 대상

  • AMI, Snapshot
  • S3
  • Lambda
  • EC2, EBS
  • VPC 자원
  • Event Bridge
  • CloudWatch
  • Security Group 내에 있는 launch wizzard SG

이외 추가적으로 봐야할 자원이 있다면 안내부탁드립니다.

@Kim-Yul Kim-Yul self-assigned this Nov 27, 2024
@seungwoo1124
Copy link
Collaborator

쓰지않는 수백개의 launch wizzard (security group) 도 지웠으면 좋겠습니다.

@seungwoo1124
Copy link
Collaborator

seungwoo1124 commented Dec 6, 2024

AMI 를 삭제하더라도 snapshot 이 남아있는 경우가 있습니다.
snapshot 의 description 에서 for ami-{HASH} 부분에서 이미 deregister 된 AMI 라면 snapshot 도 같이 정리하는 것이 필요할 것 같습니다. 꽤나 가격을 차지하고 있습니다.

image

수동으로 삭제할까 했는데, 이후에도 AMI 삭제 후 snapshot 을 삭제하지 않는 일은 계속해서 발생할 것 같아서 의견 남깁니다.

해당 기능이 이미 있는것을 유림님을 통해서 확인했는데, 주기적으로 실행하는 것이 어떨까요

@Kim-Yul
Copy link
Collaborator Author

Kim-Yul commented Dec 6, 2024

이전에는 주기적으로 할 필요가 없을 것으로 판단되어 이벤트 브릿지를 넣지 않았는데, 2주나 1달 간격으로 진행해볼까요? 그리고 필요하다면 그때그때 추가적으로 삭제해도 좋을 것 같습니다. 우선은 현재 스냅샷이 많은 것 같으니 내일 오전 10시에 스냅샷 정리 람다를 실행하겠습니다.

@Kim-Yul Kim-Yul assigned Kim-Yul and seo1120 and unassigned Kim-Yul Dec 19, 2024
@Kim-Yul
Copy link
Collaborator Author

Kim-Yul commented Dec 20, 2024

자원 정리 대상 중 현재 관리되고 있지 않는 자원 확인 및 정리

  • Lambda
  • CloudWatch
  • CloudWatchLogs
  • Security Group

서현님께 자원 관리를 어떻게 해야할지 대략적으로 설명했습니다.
매년 사용하는 자원을 관리해야 하는만큼 수동으로 지워도 되지만 코드로 관리하는 것도 좋다고 생각하였습니다.
어떤 방법으로 어떻게 삭제하는 것이 좋을지 고민해보고, 1월 첫째 주 이전으로 자원 관리를 마무리할 계획입니다.
진행은 @seo1120 님과 함께 할 예정입니다.

@seo1120, 어떻게 삭제하는 것이 좋을지 고민하고 공유해주시기 바랍니다.

@seo1120
Copy link
Collaborator

seo1120 commented Dec 23, 2024

  • Lambda
  • CloudWatch
  • CloudWatchLogs
  • Security Group

위 자원들을 효율적으로 관리하기 위해서 코드를 사용하는 방법을 고려중입니다.
AWS CLI 환경 구축과 boto3를 사용하기 위한 가상환경 설정으로 인해 예상보다 시간이 소요되어서 작업 진행이 다소 늦어진 점 양해 부탁드립니다.
현재 환경 설정은 모두 마친 상태이고, 먼저 Lambda를 자동으로 자원 관리하는 방법을 계획해 보았습니다.

Lambda 관리 계획

우선 CloudWatchLogs를 통해 함수 호출 횟수를 확인하여 사용되지 않는 함수를 필터링합니다.
: get_metric_statistics API를 활용해서 함수 호출 횟수를 구하는 파이썬 함수를 개발합니다.
또한 마지막 수정일을 확인하여 오랫동안 수정되지 않은 함수도 필터링합니다.
: get_function API에서 LastModified 필드값을 확인합니다.
마지막으로 후보군을 삭제하기 전에 연결된 리소스를 검사하여 의존성을 제거합니다.
: API Gateway, EventBridge, CloudWatch Logs, S3 등 연결된 리소스를 하나의 파이썬 함수로 묶어서 검사합니다.
반복적으로 작업이 수행되기 위해 위 과정을 Lambda 함수로 구현하여 일정에 맞게 관리할 예정입니다.

위 흐름으로 진행하는 것이 효율적인 자원 관리를 위한 적절한 방향이라고 판단되며, 이에 대해 추가적인 의견이나 피드백이 있으시면 말씀 부탁드립니다.

@Kim-Yul
Copy link
Collaborator Author

Kim-Yul commented Dec 26, 2024

서현님께서 올려주신 계획 확인했습니다.
우선 계획하신 방법 읽어보니 마지막 수정일이 'last modified'로 보입니다. 이는 람다의 코드 수정일로 판단되고, 실제 함수를 마지막으로 실행시킨 일자는 아니라서 오랫동안 수정되지 않아도 사용될 가능성이 있으니 제외하는 것이 좋아보입니다.
그 외 나머지는 좋아보이지만, 아직 실제로 사용하는지 아닌지를 판단하기에는 어려움이 있어보입니다. 우선 Security Group 관리부터 시작하면서 어떻게 하면 좋을지 확인해보시면 좋을 것 같습니다.

boto3를 참고해보면 vpc의 아이디를 통해 어떤 Security Group이 있는지 확인하는 get_security_groups_for_vpc API 가 있습니다. SG은 기본적으로 VPC 아래 생성되는 것이다 보니 VPC에 속해있는 자원이라 VPC ID를 필요로 하는 것 같습니다. VPC ID를 얻어온 다음에 이를 이용하여 SG를 다 읽어오는 방식을 사용하고, 추후에 가지고 있는 리스트로 delete_security_groups 을 하면 될 것 같습니다.

우선 작업하고 있는 상황에서는 모든 SG가 아니라 테스트 SG를 하나 정하시고 String matcing을 통해 삭제하는 식으로 진행해보면 좋을 듯 합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants