내가 보려고 만든 블로그

AWS Boto3 를 이용해 S3 내 파일 카피하기 본문

Data Engineering/AWS

AWS Boto3 를 이용해 S3 내 파일 카피하기

정의김 2021. 12. 26. 18:42

AWS가 GUI를 제공하여 손쉽게 파일을 관리할 수 있긴 하지만 파일의 수가 많아지면 이를 일일이 다 클릭기반으로 관리할 수가 없다. 이때 필요한 것이 바로 Boto3이다. AWS에서 제공하는 sdk로 이를 이용해 S3도 손쉽게 다룰 수있다.

 

import boto3
s3 = boto3.client('s3' , region_name = 'ap-northeast-2')
obj_list = s3.list_objects(Bucket ='amplitude-class101-41574' , Prefix = 'class101/194714' )
contents = obj_list['Contents']

위와 같이 버켓내 파일들의 리스트를 볼 수 가 있다.

 

paginator = s3.get_paginator('list_objects_v2')
pages = paginator.paginate(Bucket ='amplitude-class101-41574' , Prefix = 'class101/194714' )
for page in pages:
    for obj in page['Contents']: 
        if obj['Key'].split('/')[2][7:11] == '2021' and obj['Key'].split('/')[2][12:14] == '07':
            file_list.append(obj['Key'])

 

for i in file_list:
    copy_source = {
        'Bucket': 'amplitude-class101-41574',
        'Key': i
    }
    
    name = i.split('/')[2]
    front = 'class101/korea_2021_06_01/'
    final_name = front + name 
    s3.meta.client.copy(copy_source, 'amplitude-class101-41574' , final_name)

위와 같이 paginator를 통해 버켓내 모든 파일들에 대하여 2021년도 7월 데이터만을 가지고 올 수도 있다.

'Data Engineering > AWS' 카테고리의 다른 글

AWS Glue를 이용해 손쉽게 ETL 하기  (0) 2021.12.26