본문 바로가기

카테고리 없음

AWS S3에 파일 업로드하고, 불러오기 with boto3

728x90

 

S3에 버킷을 만듭니다.

저는 auction-prices라는 버킷을 만들었습니다.

 

awscli를 설치하고 aws configure를 이용해 key와 secret을 등록 합니다.

등록을 한 후에 vim ~/.aws/credentials 를 열어보면 위와 같이 등록이 되있는 것이 확인된다면 잘 된 것입니다.

import boto3

session = boto3.Session(profile_name='default')
s3 = session.client('s3', region_name='ap-northeast-2')
s3.upload_file('auction_price_onion_2020_2021.json', 'auction-prices', 'ffff.json')

 'auction_price_onion_2020_2021.json'이라는 파일을 'auction-prices'라는 버킷에 'ffff.json'이라는 파일 이름으로 업로드 하는 코드 입니다.

 

 

S3에서 파일 불러오기

s3_resource = boto3.resource('s3')
bucket = s3_resource.Bucket(name='auction-prices')
bucket.Object('ffff.json').key

위 코드를 이용해 불러오기 원하는 파일이 있는지 확인 해봅니다. .key property를 출력 했습니다.

결과로 위와 같이 나오면 파일이 있다는 것입니다.

 

.get()으로 response확인하기

s3_resource = boto3.resource('s3')
bucket = s3_resource.Bucket(name='auction-prices')
bucket.Object('ffff.json').get()

boto3는 AWS서비스들의 API를 고도화 시킨 라이브러리로 안에서는 http request와 response가 오고 갑니다. 그래서 boto3의 Object는 http response입니다. .get()을 이용해 response를 출력 해보면 위와 같습니다.

 

DataFrame으로 만들기

s3_resource = boto3.resource('s3')
bucket = s3_resource.Bucket(name='auction-prices')
str = bucket.Object('ffff.json').get()['Body'].read()
jo = json.loads(str)
df = pd.DataFrame(jo)

.get()['Body'].read()를 이용하면 str형태의 Body를 볼 수 있습니다. json으로 변환한 후 df로 만드는 코드 입니다.

728x90