반응형
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)
더 많은 내용을 보시려면 아래를 참고하세요.
블로그의 다른 글
반응형
'[개발] Infrastructure > AWS' 카테고리의 다른 글
OAI를 사용하여 Cloudfront를 배포한 경우, aws cli s3는 어떻게 사용할까? (0) | 2021.09.25 |
---|---|
ECS 인스턴스 Docker에 컨테이너 안 올라갈 경우 (Feat. ECR, Jenkins, Gradle) - war 파일 (0) | 2021.09.07 |
About accessing AWS instances ssh using .pem (0) | 2021.08.06 |
사용 중인 모든 AWS 서비스를 확인하는 방법인 Tag Editor를 알아보자. (0) | 2021.07.30 |
미 사용 AWS EC2 보안 그룹은 어떻게 확인할까? (0) | 2021.07.28 |