2023. 10. 27. 04:01ㆍWEB
지난 게시글에서 이미지 생성 모델인 Dall-E를 통해 메뉴의 이미지를 생성하고 결과를 받아오는데에 성공했습니다.
이제 이 이미지를 저장 및 공개해 모두가 볼 수 있게 만들어야하는데, 저는 구글 클라우드의 GCS를 사용해 구현하도록 하겠습니다.
GCS란?
Google Cloud Storage(GCS)란 구글 클라우드에서 제공하는 클라우드 객체 저장소로 AWS의 S3와 유사합니다.
이미지, 미디어, 백업 데이터 등 구조화 되어있지 않은 바이너리 또는 객체 데이터의 저장 용도로 적합하며, GCS 역시 여러 리전에 동일한 레플리카를 만들어 높은 가용성과 장애 복구 등이 가능합니다.
이외에도 서비스 계정을 사용해 외부 접근을 막고 데이터를 안전하게 보관할 수 있지만, 여기서는 외부 액세스를 허용하기 위한 공개 스토리지의 구축이 목적이기 때문에 바로 만들어보도록 하겠습니다.
버킷의 이름, 리전 등 설정을 하고 객체 액세스를 제어하는 방식에서
버킷이 생성되었으면, 저장된 이미지를 모두가 볼 수 있도록 버킷의 권한을 수정합니다.
이제 해당 스토리지의 객체들을 공개할 준비가 끝났습니다.
이미지를 GCS에 저장
그럼 이제 아까 만들어진 이미지를 저장할 차례입니다.
base64 형태로 인코딩 된 데이터를 GCS에 저장하면 되는데, 저는 python의 google-cloud-storage 모듈을 사용했습니다.
requirement.txt에 google-cloud-storage를 추가해줍시다.
uuid는 저장할 파일 이름을 유니크하게 생성하는 역할이고, base64는 인코딩 된 이미지를 다시 디코딩하는 역할, storage는 gcs에 접근하기 위해 사용됩니다.
예제 코드의 흐름은 크게
- 이미지 복호화
- GCS 클라이언트 객체 생성
- 저장될 파일 명 생성
- Bucket에 Blob 엔티티 생성, 파일 업로드
- 공개 url 사용
으로 구분됩니다.
위 과정을 통해 쉽게 GCS에 파일을 저장할 수 있습니다.
❗️ 유의점 ❗️
로컬 환경에서 Cloud Storage에 업로드 해보려고 하면, 권한이 없어서 실패하게됩니다.
allUsers가 볼 수 있게 했지만, 파일의 업로드는 권한이 있는 사용자만 가능하기 때문인데요
이를 로컬에서 사용하기 위해 json 포맷의 인증 키와 환경 변수가 필요하지만, 저희가 작성중인 Cloud Functions에서는 이러한 인증 관련 설정이 되어있어 동일 프로젝트 내에서는 쉽게 접근할 수 있습니다.
따라서 권한 관련 설명은 해당 포스팅에서는 다루지 않겠습니다.
이미지를 저장하고 public url을 획득했다면
- 글의 제목
- 메뉴에 대한 설명
- 메뉴에 대한 재료와 조리법
- 메뉴 이미지의 url
의 데이터를 가지고 있게 됩니다.
이제 이 정보를 가지고 티스토리 API를 통해 블로그에 포스팅을 해야하는데, 이 부분은 다음 포스팅에서 Google Cloud Scheduler와 함께 다루도록 하겠습니다.
다음 글이 드디어 마지막 글이군요..
글이 도움이 되셨다면 광고를 보셔도 좋고, 댓글을 달아주셔도 좋습니다.
'WEB' 카테고리의 다른 글
[서비스] AI 요리 블로거 챗종원 개발기 -完 (2) | 2023.10.28 |
---|---|
[서비스] AI 요리 블로거 챗종원 개발기 -6 (0) | 2023.10.27 |
[서비스] AI 요리 블로거 챗종원 개발기 -4 (5) | 2023.10.27 |
[서비스] AI 요리 블로거 챗종원 개발기 -3 (2) | 2023.10.26 |
[서비스] AI 요리 블로거 챗종원 개발기 -2 (2) | 2023.10.25 |