Google Cloud Storage
Parquet files in your GCS bucket, authorised by a service-account key you mint.
Every destination receives the same layout; see the tables Ingest creates.
Setup
Parquet files in a GCS bucket you own, under the prefix in Base URI (gs://your-bucket/warehouse).
A service account and key
- In the Google Cloud console: IAM & Admin → Service Accounts → Create service account in the
project that owns the bucket. A name like
ingest-lakeis enough; skip the optional grant step. - Grant it Storage Object Admin (
roles/storage.objectAdmin) on the bucket: Cloud Storage → your bucket → Permissions → Grant access, paste the service account's email. Bucket-level, not project-level: Ingest writes, reads back and deletes objects under your prefix, and nothing else. - Open the account → Keys → Add key → Create new key → JSON. The file downloads once.
- Paste the whole JSON file into Service-account key on the destination. It is stored as a secret in your own namespace and never returned to the browser.
Then test it
Test connection creates a scratch schema and a table, writes a few rows through the same load path a real run uses, reads them back to check the count is exactly right, round-trips pipeline state, and drops the lot. A 403 here is the bucket grant; a malformed-key error is caught before anything connects, naming
the field.
Staging
needs_staging: none. Parts are written straight to your prefix.
Writes
Plain files cannot merge: a resource with a merge disposition is excluded before deploy, with the reason shown. Pick the Iceberg option for connectors that need upserts.
Conformance
Every adapter passes the same suite before it ships: create a table with every canonical type, append
100k rows, atomic replace, merge (latest dedup_sort wins; child tables delete-then-insert by root
id), schema evolution, NULL-key rejection, package replay without duplicates, state and schema
round-trip, row-count read-back, identifier edge cases, double-underscored table names (__quarantine, child tables), and rollback on a
mid-load failure.