본문 바로가기
개발/아키텍처

s3 bucket에서 사이즈가 가장 큰 file 찾기

by Devsong26 2021. 8. 12.

s3 대시보드 페이지에서 "Storage Lens 대시보드 보기"를 클릭하면 용량을 많이 차지하는 bucket을 확인할 수 있다.

bucket의 용량이 크면 비용이 많이 발생하기 때문에 필요없다면 지워야 한다.

 

하지만 대용량의 버킷은 파일도 많기 때문에 수동으로 확인하는 것은 한계가 있다.

그래서 스크립트를 작성하여 가장 큰 사이즈의 파일을 찾아보기로 했다.

 


본 스크립트에서 사용되는 Programming Access 계정은 아래의 권한을 가져야 한다.

"s3:DescribeJob"
"s3:Get*"
"s3:List*"

 

두 개의 메소드를 사용한다.

list_objects(**kwargs)

list_objects_v2(**kwargs)

 

두 메소드의 차이는 list_objects_v2(**kwargs)는 시작 파일 위치를 지정할 수 있다는 것이다.

 

import boto3


class S3:
    def __init__(self, aws_access_key_id, aws_secret_access_key, region_name):
        sess = boto3.Session(
            # TODO: Supply your AWS credentials & specified region here
            aws_access_key_id=aws_access_key_id,
            aws_secret_access_key=aws_secret_access_key,
            region_name=region_name,  # Or whatever region you want
        )

        self.__s3 = sess.client('s3')

    def check_find_the_biggest_file(self, bucket):
        start_after = None
        max_size = 1
        max_obj = None

        while True:
            if start_after is None:
                objs = self.__s3.list_objects(Bucket=bucket)
            else:
                objs = self.__s3.list_objects_v2(Bucket=bucket, StartAfter=start_after)

            if 'Contents' in objs:
                contents = objs['Contents']
            else:
                break

            for i, e in enumerate(contents):
                if e['Size'] > max_size:
                    max_size = e['Size']
                    max_obj = e

            start_after = contents[len(contents) - 1]['Key']

        print(max_obj)


if __name__ == '__main__':
    aws_access_key_id = ''
    aws_secret_access_key = ''
    region_name = ''
    bucket = ''

    s3 = S3(aws_access_key_id, aws_secret_access_key, region_name)
    s3.check_find_the_biggest_file(bucket)

 


더 많은 내용을 보시려면 아래를 참고하세요.


블로그의 다른 글

 

AWS Well-Architected Tool이란 무엇일까?

이번에 회사에서 사용중인 AWS 아키텍처의 보안 점검을 위해, "AWS Well-Architected Tool"이라는 무료 도구를 사용한다는 이야기를 들었다. 생소하여 간단히 조사 및 학습을 해보려고 한다. 해당 글은

developer-syubrofo.tistory.com

 

AWS도 로그인 시 OTP를 쓸 수 있다? AWS MFA에 대해서 알아보자

보통 로그인을 할 때 2차 인증으로 OTP를 많이 사용한다. AWS에도 OTP가 있는지 궁금했는데, MFA라는 것이 있었다. 한 번 알아보자. AWS MFA란? AWS Multi-Factor Authentication(MFA)은 사용자 이름과 암호 외에..

developer-syubrofo.tistory.com

 

미 사용 AWS key-pairs 를 정리하는 방법

장기간 서비스를 이용하다 보면 사용 여부를 모르는 리소스들이 많이 생겨난다. 이번에 AWS EC2 리소스 중 key-pair를 정리하려다 알게 된 내용을 정리한다. AWS EC2 Key-Pairs란? 프라이빗 키와 퍼블릭

developer-syubrofo.tistory.com

 

boto3 라이브러리로 미 사용중인 AWS EBS를 알아보자.

boto3는 python3 라이브러리다. AWS EBS 웹 UI는 사용자가 이용하기 편리하지만, 나는 코드로 확인을 해보고 싶었다. 우선 AWS CLI 계정의 액세스 키와 시크릿 액세스 키, 리전을 사용하여 세션 객체를

developer-syubrofo.tistory.com

 

About accessing AWS instances ssh using .pem

AWS 리눅스 인스턴스의 경우 이미지 별로 디폴트 유저이름을 갖는다. boto3 라이브러리를 이용하여, .pem 파일로 ssh 접속하는 인스턴스 정보를 엑셀로 다운받는 스크립트를 작성했다. 리눅스 AMI 별

developer-syubrofo.tistory.com