S3 버킷을 파이썬에서 boto3
EB를 이용해 백엔드로 서버를 일단 움직여보려 했으나 아직 실력이 부족해 EC2를 이용해 서버를 운용했다.
그 과정에서 유저들의 데이터를 S3로 받았고 파이썬 boto3를 이용해 코드를 구상했다.
일단 소스 내에서 키를 받게 했는데 후엔 보안상의 문제로 깃이나 EB에서 시크릿 키로 전환 할 생각이다.
s3 = boto3.client('s3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY
)
여기서 =aws_부분은 각자 가지고 잇는 키 아이디와 시크릿 키를 넣으면 된다.
이후 POST된 파일을 request.files로 받아온 후 파일 저장을 하면 된다.
#파일 값 받아오기
file = request.files['file_give']
# s3 파일 저장
s3.put_object( #s3에 저장
ACL="public-read", #권한은 퍼블릭 읽기
Bucket=BUCKET_NAME, #버킷 이름 입력
Body=file,#파일
Key=name,#파일 명 ( 폴더로 넣으려면 '넣을곳/'+이름 식으로 하면 된다
ContentType=file.content_type #메타 데이터 설정 ex)image/jpeg
이후 쉽게 이미지를 다시 불러오기 위해 방금 S3에 저장된 값의 url을 불러온다
# s3 url 불러오기
location = s3.get_bucket_location(Bucket=BUCKET_NAME)['LocationConstraint']
image_url = f'https://{BUCKET_NAME}.s3.{location}.amazonaws.com/{name}'
먼저 location 정보를 가져오는데 location은 AWS가 전세계에서 데이터 센터를 클러스터링 하는 물리적 위치(리전)
처음 S3서비스를 이용할 때 정한 리전 정보를 가져오자
그 다음 버킷이름.s3.로케이션.amazoneaws.com/파일경로 순으로 작성하면 s3를 들어가서 확인하지 않고도 파일URL만 따로 빼서 사용할 수 있다.
반응형
'정리' 카테고리의 다른 글
20 TIL 정리 (Azure,JAVA기초) (0) | 2022.05.17 |
---|---|
19 TIL 정리 (ms클라우드 azure) (0) | 2022.05.13 |
17 TIL 정리 (로드뷰,onkeyup) (0) | 2022.05.11 |
16 TIL 정리 (캘린더,정규식,if else,미리보기) (0) | 2022.05.11 |
15 TIL 정리 (카카오 지도api, 400에러,주소자동완성) (0) | 2022.05.10 |