Skip to main content
Version: 3.0 (beta)

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. Default is to infer them from GOOGLE_APPLICATION_CREDENTIALS.
GS_MEDIA_BUCKET_NAMEThe GCS bucket name to use for media files.
GS_STORAGE_BUCKET_NAMEThe GCS bucket name to use for static files.
GS_MEDIA_CUSTOM_ENDPOINTA custom endpoint to be used instead of https://storage.googleapis.com
GS_EXPIRATIONThe number of seconds that a generated signed URL is valid for . Defaults to 86400 secondes (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 BGC to store and serve media files, you need to configure at least the bucket name (see table above).

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 (see table above).

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>