Python | aws s3 버킷 접근하기

보람·2022년 9월 17일
0

Python

목록 보기
1/4

업무에서 파이썬을 사용할 일이 생겨서 처음으로 사용해봤다!!

s3에 파일을 업로드해야 하는 부분이 있어서 찾아보니
파이썬에서는 boto3라는 라이브러리를 사용하여 접근하면 된다고 한다.

사전 작업

aws cli 설치

로컬에서 작업하기 위해선 awscli 설치후 credentials 를 작성해야 연결 가능하다!!
awscli를 설치하지 않고 boto3를 이용할수 있는 방법도 있었는데 이 방식이 더 코드가 간결해 보였다.

pip install awscli

credentials 파일 작성

  • vi ~/.aws/credentials 아래 내용 작성후 esc & wq!해서 나가면 파일 생성 끝
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

위 두가지 값 작성할 것!

install boto3 & dotenv

pip install boto3
pip install python-dotenv

import

import os
from dotenv import load_dotenv
import boto3
import json 

load_dotenv()
  • dotenv는 .env 파일에 있는 값을 얻어올 수 있다.
    • 아래에 os.environ.get('AWS_BUCKET') 에서 AWS_BUCKET를 얻어오기 위함
  • .env 파일에는 아래와 같은 형식으로 값이 들어있겠쥬?
AWS_BUCKET=버킷이름

s3 연결

s3_client = boto3.client('s3')
  • 위 문장으로만으로 aws의 s3에 연결할 수 있는 것은 awscli를 설치하여 credentials 생성했기 때문이다.🌝

Example

s3 file download

f = BytesIO()
s3_client.download_fileobj(os.environ.get('AWS_BUCKET'), "file_path", f)

print(json.loads(f.getvalue())) # json dumps 예시를 위해 
  • 위 예시는 s3 file donwload하여 json으로 변환하는 것

s3 upload - put_object

try:
    s3_client.put_object(Bucket=os.environ.get('AWS_BUCKET'), Key="file_path", Body=body, ACL='public-read')
    return True
except:
    return False

put_object options

  • Bucket : s3 bucket name
  • Key : file path
  • Body : 업로드할 데이터
  • ACL : 인증방식, 위 예시는 public 처리

위에는 핵심코드만 올렸지만 실제로는 헬퍼 함수를 만들어서 접근하였다 : )

profile
백엔드 개발자

0개의 댓글