google api 를 쓰면 python 에서 바로 클라우드 저장소에 파일을 업로드 할 수 있었다. google cloud storage 들어가면 잘 성명되어 있다. 아래는 내가 쓰면서 정리한 내용인데 참고하시면 될거 같다.
- 서비스 키 생성, 로컬에 저장
- 환경변수 등록(굳이 안해도 상관없음)
$pip install google-cloud-storage
# Imports the Google Cloud client library
from google.cloud import storage
# Instantiates a client
# 환경변수 등록시
#storage_client = storage.Client()
# 환경변수 등록 x '시크릿키' 는 1번단계에서 생성됨
#storage_client = storage.Client.from_service_account_json(
'YOUR_SECRET_KEY_DIR')
# The name for the new bucket
# 파일 공유할 저장소 이름을 설정해 주면됩니다.
bucket_name = "my-new-bucket"
# Creates the new bucket
bucket = storage_client.create_bucket(bucket_name)
print("Bucket {} created.".format(bucket.name))
from google.cloud import storage
def upload_to_bucket(blob_name, path_to_file, bucket_name):
""" Upload data to a bucket(아까 만들었던 저장소)"""
# Explicitly use service account credentials by specifying the private key
# file.
storage_client = storage.Client.from_service_account_json(
'YOUR_SECRET_KEY_DIR')
#print(buckets = list(storage_client.list_buckets())
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(blob_name)
blob.upload_from_filename(path_to_file)
#접근권한 public 으로 설정
blob.make_public()
#파일 url 만들어주기
url = blob.public_url
#returns a public url
return url
#parameter순서대로 공유된 파일이름, 로컬저장된파일 경로, 저장소 이름
url =upload_to_bucket("blob_name","path_to_file","bucket_name")
print(url)
def download_blob(bucket_name, source_blob_name, destination_file_name):
"""Downloads a blob from the bucket."""
# bucket_name = "your-bucket-name"
# source_blob_name = "storage-object-name"
# destination_file_name = "local/path/to/file"
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
print(
"Blob {} downloaded to {}.".format(
source_blob_name, destination_file_name
)
)