가끔가다 앱이나, 웹으로 개발하다가 이미지를 클라이언트에 보여줘야 때가 있다. 당연히 DB에 이 이미지에 대한 정보를 넣어줘야 한다. 하지만, 이미지 자체를 DB에 넣어줄 수는 없는 법!!! 이미지를 클라우드 등과 같은 곳에 업로드를 하여서 URL을 얻어와야 한다.
오늘은, 파이썬을 활용해 이미지를 Google Cloud Platform(이하 GCP)을 통해 이미지를 업로드하는 방식을 포스팅 해보도록 하겠다.
버킷을 생성하는 것에 대한 참고 URL은 다음과 같다.
폴더명
ㄴ 파이썬-파일명.py
ㄴ 다운로드-받은-json-파일명.json
이제 다음은 코드 부분이다.
### 환경 변수 설정
import os
# 사전에 json 파일을 다운로드 받을것!
# 역슬래쉬를 슬래쉬로 다 변경할 것
KEY_PATH = "[json 파일 절대 경로]"
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]= KEY_PATH
### 인증 확인
from google.cloud import storage
storage_client = storage.Client()
buckets = list(storage_client.list_buckets())
print(buckets) # 결과 => [<Bucket: 버킷 이름>]
### GCP에 파일 올리기
# 관련 참고 링크 : https://soundprovider.tistory.com/entry/GCP-Python%EC%97%90%EC%84%9C-GCP-Cloud-Storage-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0
# 서비스 계정 생성한 bucket 이름 입력
bucket_name = '버킷이름'
# GCP에 업로드할 파일 절대경로, 경로 사이 역슬래쉬는 슬래쉬로 변환할 것
source_file_name = '이미지 절대경로'
# 업로드할 파일을 GCP에 저장할 때의 이름. 새로운 이미지를 넣을 때마다 바꾸어줘야 함
destination_blob_name = 'GCP에 이미지 저장 시 저장 이름'
# 이미지 업로드하기
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
blob.upload_from_filename(source_file_name)
print("done!") # 삽입 완료 시 출력 문구
이제 GCP에 버킷을 가면 업로드한 이미지가 있는 것을 확인할 수 있다. 여기서 알 수 있는 것이 있다. 만약 본인의 버킷 이름이 "참새"(실제로는 영어겠지만)라고 가정해보자. 그렇다고 한다면 이에 대한 공개 URL은 다음과 같다.
만약 이 버킷에 본인이 이미지의 destination_blob_name을 "image01"로 지정했다면, 이 사진에 대한 공개 URL은 아래와 같다.
이 URL은 chrome이든 뭐든 들어가서 쳐보고 들어가면 이미지가 잘 뜨는 것을 확인할 수 있다.
-> Irish Github