Python에서 가짜 구글 클라우드 스토리지

구글 클라우드에 등록하고 구글 클라우드 스토리지 서비스를 이용할 수 없는 문제가 있었습니다. 온라인 검색을 시도하고 이 저장소를 찾았습니다: https://github.com/fsouza/fake-gcs-server

훌륭한 문서가 있으며 docker가 설치된 경우 실행할 수도 있습니다.

$ docker run -d --name fake-gcs-server -p 4443:4443 fsouza/fake-gcs-server


Google 클라우드 스토리지에 파일을 업로드하는 작업이 있었지만 버킷에 대한 액세스 권한이 부여되지 않았습니다. 우리는 docker를 사용하고 있었고 docker-compose.yml 파일에 쉽게 추가할 수 있었습니다.

version: '2'
services:
  mygooglecloudstorage:
    container_name: mygooglecloudstorage
    image: fsouza/fake-gcs-server
    ports:
      - "4443:4443"
    volumes:
      - ./gcs/data:/data # This just prepopulates data


그리고 먼저 로컬에서 사용하고 싶었기 때문에 다음 내용으로 fake_gcs.py라는 파일을 만들었습니다.

def get_fake_client():
    import requests
    import urllib3
    from google.api_core.client_options import ClientOptions
    from google.auth.credentials import AnonymousCredentials
    from google.cloud import storage
    my_http = requests.Session()
    my_http.verify = False # disable SSL validation
    urllib3.disable_warnings(
        urllib3.exceptions.InsecureRequestWarning
    ) # disable https warnings for https insecure certs

    client = storage.Client(
        credentials=AnonymousCredentials(),
        project="test",
        _http=my_http,
        client_options=ClientOptions(api_endpoint='https://127.0.0.1:4443'),
    )
    return client


나중에 코드를 푸시할 때 client = storage.Client()client = get_fake_client()로 쉽게 바꿀 수 있도록 이 작업을 수행했습니다.
storage.Client() 패키지는 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 사용하므로 원본 클라이언트와 가짜 클라이언트를 전환하는 데 큰 문제가 없었습니다.

이제 원래 서버에서 평소처럼 가짜 서버에서 일반 작업을 수행할 수 있습니다.

from fake_gcs import get_fake_client

client = get_fake_client()
bucket = client.bucket('sample-bucket')
blob = bucket.get_blob('test_file.txt')

좋은 웹페이지 즐겨찾기