Google Cloud Storage Destination Config Reference
- free
- growth
- enterprise
5 minute read
Google Cloud Storage is an object storage destination. RudderStack batches events and writes them as files into a GCS bucket you own.
In a Google Cloud Storage destination spec:
type: gcsdefinition_version: 1
Sample configuration
version: rudder/v1
kind: destination
metadata:
name: gcs-events-prod
spec:
id: gcs-events-prod
display_name: GCS Events Production
type: gcs
definition_version: 1
enabled: true
config:
bucket_name: rudder-events-prod
prefix: rudder/events
credentials: '{{ .GCS_CREDENTIALS }}'
connection_mode:
web: cloud
cloud: cloud
consent_management:
web:
- provider: oneTrust
consents:
- analyticsThe above example supplies the service account key through a variable, which is how you should always set credentials — see Secrets.
Config keys
config accepts only the keys listed below. The shared config key rules cover unknown keys, defaults, and immutability.
Bucket
bucket_name
RequiredType:
string
Description: Name of the GCS bucket RudderStack writes event files to. The bucket must already exist.
Notes:
- At most 100 characters, and must not contain line breaks.
- A
{{ path || fallback }}template is accepted in place of a literal, and isn’t measured against the length limit.
prefix
Type:
string
Description: Folder prefix inside the bucket. RudderStack writes all files beneath it.
Notes:
- At most 100 characters, and must not contain line breaks.
- Templates are accepted on the same terms as
bucket_name.
Authentication
credentials
SecretType:
string
Description: Contents of the JSON key file for a GCP service account that can create objects in the bucket.
Notes:
- Rudder CLI doesn’t require this key and doesn’t validate its content.
Supply it as a {{ .VAR }} reference rather than a literal — see Secrets.
See Setting up Google Cloud Storage for how to create the service account and its key.
Per-source keys
Both keys are objects keyed by the local source type — the tokens listed under Source types. A key naming a source type this destination doesn’t support fails validation.
connection_mode
Type:
object
Description: Maps each source type you connect to the mode its events reach GCS in, using the modes in Source types.
Notes:
- An entry is required for each source type you connect — see Connect a source.
connection_mode:
web: cloud
cloud: cloudconsent_management
Type:
object
Description:
Consent provider configuration per source type. The entry shape, accepted providers, and the rules on resolution_strategy and consents are shared across all destination types — see Consent management.
Source types
Google Cloud Storage accepts events from these source types in the mentioned connection modes:
| Source type | Connection mode |
|---|---|
android | cloud |
android_kotlin | cloud |
ios | cloud |
ios_swift | cloud |
web | cloud |
unity | cloud |
react_native | cloud |
flutter | cloud |
cordova | cloud |
cloud | cloud |
warehouse | cloud |
Every source type is cloud only — events reach the bucket from RudderStack’s servers, never in device mode.
warehouse is the token a Reverse ETL source resolves to. Rudder CLI manages the destination’s warehouse entry — if the destination is connected to a Reverse ETL source, set connection_mode.warehouse: cloud in its spec, or apply removes it.
Rudder CLI can also declare the Reverse ETL connection itself, for the types listed under Supported destinations — see Manage Reverse ETL Connections using Rudder CLI.
The dashboard additionally offers Google Cloud Storage to AMP and Shopify sources. Rudder CLI doesn’t manage those connections, soampandshopifyare invalid here.
Connect a source
An event stream connection to this destination is checked against two rules at validate time.
The source’s type must be supported. A source’s type resolves to one of the tokens above before the check — a JavaScript source resolves to web, and webhook and server-side SDK sources resolve to cloud. Every type an event stream source can resolve to is supported here, so this check always passes.
The destination config must carry a connection_mode entry for that source type. This lives on the destination spec, not on the connection spec. Without it:
destination 'gcs-events-prod' config has no 'connection_mode' entry for source type 'web'Google Cloud Storage needs no additional config keys to connect a source of any type.
Secrets
credentials is the only secret key. Write it as a {{ .VAR }} reference and supply the value at apply time:
config:
credentials: '{{ .GCS_CREDENTIALS }}'export RUDDER_GCS_CREDENTIALS="$(cat service-account.json)"
rudder-cli apply
# or
rudder-cli apply --var-file secrets.vars.yamlNote that:
credentialsis JSON, so write its reference in single quotes, as above. Rudder CLI pastes the value into the YAML before parsing it, and the JSON’s double quotes would end a double-quoted string.rudder-cli importwrites only the secrets the API returns, as{{ .VAR }}references, and leaves the others out. Add any secret key it leaves out, then supply the variables before you apply — see Secrets.
See How to Use Variable Substitution in Rudder CLI.
Changes by release
| Version | Change |
|---|---|
| v0.29.0 | Breaking: A null config value, written as key: null, key: ~, or key: with no value, fails validate with '<key>' must not be null; set a value or remove the key. Earlier releases accepted it: a top-level null planned an update on every apply, and a null inside a list item failed at the API.What to do: Remove the key to leave it unset, or give it a value. |
| v0.29.0 | Changed: validate warns when a secret key holds anything but one {{ .VAR }} reference with no default, and when one variable fills two secret keys. It also masks secret values in the lines it prints. |
| v0.29.0 | Changed: rudder-cli import writes each secret reference single-quoted, as '{{ .VAR }}', so a value containing double quotes, like a JSON key file, substitutes as a string. A single quote in a value that fills such a reference is written as ''.What to do: In a spec imported by an earlier release, quote each reference to a JSON value by hand: '{{ .VAR }}'. |
| v0.29.0 | Changed: validate reports a value of the wrong type once per key, such as 'email' must be a string, instead of one raw decoding error. |
| v0.28.0 | Added: warehouse source type, for destinations connected to a Reverse ETL source. Set connection_mode.warehouse: cloud for such a destination, or apply removes the entry. |
For changes across every destination type, see Destination Type Changes by Release.
See more
- Google Cloud Storage Destination for bucket and service account setup
- Destination Type Reference for Rudder CLI for the rules shared across destination types
- Destination YAML Reference for the spec envelope