When creating an application that manipulates GCS (Google Cloud Storage) through Flask on Cloud Run, I wanted to use a GCS emulator in the local environment. This document describes how to set up such an environment.
Emulator to Use
Sample code
I created sample code in the following repository. By following the instructions in README.md
, you can use the GCS emulator in a local environment to upload, download, and delete files.
Since you can start everything simply by cloning the repository and running make up
, setup is straightforward.
Contents of docker-compose.yml
To use the GCS emulator in the Flask container, the STORAGE_EMULATOR_HOST
environment variable is set:
services:
app:
environment:
- STORAGE_EMULATOR_HOST=http://gcs:4443
Configuring Flask’s StorageClient
The STORAGE_EMULATOR_HOST
environment variable is checked to determine whether to use the emulator:
def get_storage_client():
emulator_host = Config.STORAGE_EMULATOR_HOST
if emulator_host:
client = storage.Client(
credentials=AnonymousCredentials(),
project="test",
)
else:
client = storage.Client()
return client
Conclusiuon
When building an application on Cloud Run that manipulates GCS through Flask, you might want to use a GCS emulator in your local environment. These are the setup steps. Note that in production you will not use the GCS emulator, so simply do not set the STORAGE_EMULATOR_HOST
environment variable, specify your BUCKET_NAME
, and grant the appropriate permissions to Cloud Run.
Top comments (0)