Google Cloud Storage
Google Cloud Platform중 파일 저장 및 데이터 저장(Bigquery)과 연동이 가능한, Google Cloud Storage는 단순하게 생각하면 그냥 네이버 마이박스나, 구글 드라이브와 같은 저장 공간이다.
GCS의 장단점
장점 | 단점 |
높은 확장성 | 복잡한 가격 정책 |
우수한 데이터 접근성 | 학습 곡선(배우기 어려움) |
다양한 데이터 관리 및 보안 기능 | 인터넷 의존도 |
비용 효율성 | 데이터 이전 비용 |
다중 리전 데이터 복제 | 제한된 지원 |
Google Cloud Storage의 기능
간단한 데이터 백업 부터, Storage안에는 모든 파일과 이미지를 저장할 수 있고, 같은 GCP에 속해있는 Bigquery와 연동하여 데이터베이스 구축이 가능하다.
또한 저장된 이미지는 URL을 통해 호스팅된것처럼 사용이 가능하다.(간단한 데이터 서버)
Python코드로 Google Cloud Storage에 파일 업로드하기
1) 먼저 Credentials.json을 가져와야한다.
1-1) IAM 및 관리자 -> 서비스 계정
https://console.cloud.google.com/iam-admin/serviceaccounts
1-2) 키 -> 키 추가 -> 새 키 만들기 -> JSON으로 만들기
그러면 자동으로 json파일을 다운로드 한다.(절대 노출되어서는 안되니 주의 할것)
2) 파일 업로드 Python 코드-1
from datetime import datetime
from google.cloud import storage
import io
from PIL import Image
from google.oauth2 import service_account
import pandas_gbq
import os
import pandas as pd
# GCS와 연동하기
#[IAM 및 관리자] -> [서비스 계정]에서 .json파일을 다운가능하다.
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="저장한 Credentials.json"
# 파일명 불러오기 / 저장할 위치+파일명
bucket_name = 'Storage 버킷명'
source_file_path = '원본 엑셀.csv' #-------------------------------------------csv명
source_file_path2 = '원본 이미지.png' #-------------------------------------------png명
destination_blob_path = 'Excel_Data/저장할 엑셀명.csv' #-------------------------------------------csv명
destination_blob_path = 'Image_Data/저장할 이미지명.csv' #-------------------------------------------png명
#이때 Google Cloud Platfrom > Google Cloud Strage > Bucket안에 있는 폴더명이다.
이후 아래와 같이 코드를 실행하여 데이터를 Strage로 전송하면된다.
3) 파일 업로드 Python 코드-2
# 데이터 업로드-준비
def upload_to_storage_file(bucket_name: str, source_file_path: str, destination_blob_path: str):
storage_client = storage.Cliet()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(destination_blob_path)
blob.upload_from_filename(source_file_path)
print(f'The file {source_file_path} is uploaded to GCP bucket path: {destination_blob_path}')
return None
# 데이터 업로드-실행
upload_to_storage_file(bucket_name, source_file_path, destination_blob_path)
# 이미지 업로드-준비
def upload_to_storage_Image(bucket_name: str, source_file_path2: str, destination_blob_path2: str):
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(destination_blob_path2)
im = Image.open("image_test.png") #-------------------------------------------png명
bs = io.BytesIO()
im.save(bs, "png")
blob.upload_from_string(bs.getvalue(), content_type="image/png")
return None
upload_to_storage_Image(bucket_name, source_file_path2, destination_blob_path2)
끝.
728x90
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Pandas / Dataframe]특정 컬럼의 특정 문자열을 변경하는 코드 / 변경이 안될때 해결법 (0) | 2024.01.19 |
---|---|
[Python / pip]'pip'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다(윈도우 버전) -Solved (0) | 2024.01.09 |
[Python] Datetime format change(yyyy-mm-dd)/ Datetime 포맷 바꾸기 (0) | 2023.12.27 |
[Python/pyautogui] 마우스 움직이기 + 클릭 + 특정 키 조합으로 중단하기 (0) | 2023.12.06 |
ModuleNotFoundError: No module named 'sklearn' 해결법 - solved (1) | 2023.11.26 |