s3 대시보드 페이지에서 "Storage Lens 대시보드 보기"를 클릭하면 용량을 많이 차지하는 bucket을 확인할 수 있다.
bucket의 용량이 크면 비용이 많이 발생하기 때문에 필요없다면 지워야 한다.
하지만 대용량의 버킷은 파일도 많기 때문에 수동으로 확인하는 것은 한계가 있다.
그래서 스크립트를 작성하여 가장 큰 사이즈의 파일을 찾아보기로 했다.
본 스크립트에서 사용되는 Programming Access 계정은 아래의 권한을 가져야 한다.
"s3:DescribeJob"
"s3:Get*"
"s3:List*"
두 개의 메소드를 사용한다.
두 메소드의 차이는 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)
더 많은 내용을 보시려면 아래를 참고하세요.
블로그의 다른 글
'개발 > 아키텍처' 카테고리의 다른 글
ECS 인스턴스 Docker에 컨테이너 안 올라갈 경우 (Feat. ECR, Jenkins, Gradle) - war 파일 (0) | 2021.09.07 |
---|---|
[Linux] 디렉터리에 특정 단어를 포함하는 파일 찾기 (0) | 2021.08.17 |
About accessing AWS instances ssh using .pem (0) | 2021.08.06 |
[Linux] 로그 파일의 내용을 truncate 명령어로 삭제하기. (0) | 2021.08.03 |
Apache httpd를 사용하여 Multiple VirtualHost 다루기 (0) | 2021.08.02 |