Python을 이용하여 로컬에 있는 파일을 S3 Bucket에 업로드하기

Purpose

UiPath에서 크롤링 자동화를 이용하여 받아온 csv파일들을 AWS S3의 Bucket에 자동으로 주기적인 업로드를 구현하기 위한 방법을 찾던 중 해당 구현이 바탕이될 수 있을 것 같아 시도하게 됐다.

S3 Bucket 생성하기

💡 AWS S3에서 내가 사용할 Bucket을 생성한 후 해당 Bucket을 활용하면 된다.

import boto3

bucket_name = '<내가 만들 버켓 이름>';

# 업로드하고자 하는 파일명
in_file = 'test1.csv';

# s3에 다 올려졌을 때의 파일명
out_file = in_file

s3 = boto3.client('s3')

s3.upload_file('./upload_data_to_s3.py', bucket_name, 'csv/' + out_file)

이후 위 파일을 실행해주면 해당 S3 bucket에 업로드돼있음을 확인할 수 있다.

import boto3
import botocore

bucket_name = '<다운로드 받고자 하는 bucket명>'

# s3에 존재하는 파일명
in_file = 'test1.csv'

out_file = in_file

s3 = boto3.resource('s3')

try:
    s3.Bucket(bucket_name).download_file('csv/' + in_file, out_file)
except botocore.exceptions.ClientError as e:
    if e.response['Error']['Code'] == '404' :
        print('해당 파일이 S3에 없습니다.')
    else:
        raise

이후 위 파일을 실행해주면 해당 S3 bucket에 있는 파일이 로컬에 다운로드됨을 확인할 수 있다.