Skip to main content
Version: 3.x

Storing Files on Google Cloud Storage (GCS)

If you use containers for deployment (including Docker and Heroku), you should not store files within the container’s filesystem.

This integration allows you to delegate storing such files to Google Cloud Storage (GCS) service.

Environment variables

Variable NameDescription
GOOGLE_APPLICATION_CREDENTIALSSet an environment variable to a path of the json file.
GS_CREDENTIALSOptional. Use the OAuth 2 credentials for the connection. The default is to infer them from GOOGLE_APPLICATION_CREDENTIALS.
GS_MEDIA_BUCKET_NAMEThe GCS bucket name to use for the media files.
GS_BUCKET_NAMEThe GCS bucket name to use for the static files.
GS_MEDIA_CUSTOM_ENDPOINTA custom endpoint to be used instead of https://storage.googleapis.com.
GS_EXPIRATIONThe number of seconds which a generated signed URL is valid for. Defaults to 86400 seconds (1 day).
GS_QUERYSTRING_AUTHSetting this to True enables query parameter authentication, i.e., signed URLs for the static bucket. Defaults to False.
GS_DEFAULT_ACLACL used when creating a new blob from the list of predefined ACLs.
Defaults to None.
Note: Using publicRead to disable signed URLs when using Uniform Access Control on the bucket will make file uploads return with HTTP 400.

Serving media files from a GCS bucket

"Media files" are the files uploaded through the dashboard. They include product images, category images, and non-image files.

If you want to use GCS to store and serve media files, you need to configure at least the media bucket name (GS_MEDIA_BUCKET_NAME).

Serving static files from a GCS bucket

"Static files" are assets required for Saleor to operate. They include assets used in default email templates.

If you also intend to use GCS for your static files, you need to configure at least the bucket name (GS_BUCKET_NAME).

Cross-Origin Resource Sharing

You need to configure your GCS bucket to allow cross-origin requests for some files to be properly served (SVG files, Javascript files, etc.). To do this, set the following instructions in your GCS bucket’s permissions tab under the CORS section.

<?xml version="1.0" encoding="UTF-8"?>
<CorsConfig>
<Cors>
<Origins>
<Origin>http://origin1.example.com</Origin>
<Origin>http://origin2.example.com</Origin>
</Origins>
<Methods>
<Method>GET</Method>
<Method>HEAD</Method>
</Methods>
<ResponseHeaders>
<ResponseHeader>Content-Type</ResponseHeader>
</ResponseHeaders>
<MaxAgeSec>3600</MaxAgeSec>
</Cors>
</CorsConfig>