Google Cloud Storage destination
Renta writes data from any connected source into your own Google Cloud Storage bucket as Parquet objects, laid out one folder per pipeline and refreshed on every run.
Renta signs every request to the bucket with a service account key that you upload once. Nothing in your bucket has to be publicly reachable, and no person's Google account is involved.
Requirements
The connection needs a service account key, a bucket that already exists, and two IAM roles for that service account.
- A service account with a JSON key.
In Google Cloud Console, open IAM & Admin > Service Accounts, create a service account or pick an existing one, and on the Keys tab click Add key > Create new key with the JSON type. The downloaded file is what you upload to Renta. - Storage Object Admin on the bucket.
Renta lists, uploads, and deletes objects inside the folders it manages. Grantroles/storage.objectAdminon the bucket, or on the project if the bucket is not the only one Renta will write into. - Viewer on the project.
The connection page lists the buckets of the project for you to choose from, and that listing needsstorage.buckets.list. The predefined Viewer role (roles/viewer) grants it. Without this role the bucket dropdown stays empty. - An existing bucket.
Renta never creates the bucket. It creates only the folders inside it.
The service account email is in the client_email field of the JSON key file. After you connect the destination, Renta shows it on the connection card as the account the data is written by.
Connect Google Cloud Storage as a destination
A connection stores one service account key, one project, and one bucket.
- In the Renta console, open Connections > Catalog in the left sidebar.
- Expand the Data lake category and click the Google Cloud Storage card.

Click Upload a Service Account JSON file and select the key you downloaded from Google Cloud.
Renta checks the key with Google right away. A file that is not a service account key, or a key Google rejects, returns an error on this page, and nothing is stored. A valid key opens the connection settings.

- Destination name.
A label used only inside the Renta console. - Google Cloud Storage project.
The project of the key is preselected. Other projects appear if the service account can see them. - Google Cloud Storage bucket name.
Pick the bucket Renta writes into. The list shows the buckets of the selected project.
Click Save.
On Save, Renta creates and deletes a marker folder in the bucket with your key. A key that cannot write into the bucket returns an error right away instead of failing on the first pipeline run.

The connection appears in the Destinations list with the Active status and is ready for pipelines. A connection whose bucket has not been chosen yet stays inactive and is not offered in the pipeline wizard.

Replacing the key
Open the connection in Destinations and click Upload a new Service Account JSON file at the top of the settings page. Renta checks the new key against the stored bucket before it replaces the old one, so a key without write access is rejected and the old key stays in place. The project and the bucket do not change.
Create a pipeline into Google Cloud Storage
The steps below use Currency Exchange Rates as the source, and the same flow applies to any other source.
In the left sidebar, click New pipeline. Keep the ETL tab selected, pick a source under Already connected, choose the connection to read from, and click Next step.
On the Destination step, select Google Cloud Storage under Already connected, then pick the connection. Each card shows the bucket name, the service account email, and the project.
Fill in the source settings, then the pipeline settings:
- Integration name.
The display name of the pipeline in the Renta console. - Table name.
For a data lake this is the folder name inside the bucket. Keep the generated name or type your own. - Date range, Overwrite period, and Schedule work the same way as for any other destination. See pipeline scheduling for the schedule types.
Click Create pipeline. The pipeline appears in the Pipelines section under the ETL tab, together with the folder name, run progress, and the number of extracted rows.

Renta clears a folder by listing everything under its prefix, so a folder named stripe also covers stripe_invoices. Give each pipeline a folder name that is not a prefix of another one, otherwise a full reload of the shorter folder wipes the longer one.
Bucket layout
Everything a pipeline writes lives under its own folder, and the shape inside that folder depends on whether the data carries a date.
| Data | Object name |
|---|---|
| Date-partitioned report types | <folder>/<YYYY-MM-DD>/<file>.parquet |
| Everything else | <folder>/<file>.parquet |
The date prefix is what makes the overwrite window cheap: Renta removes the objects of the affected days instead of the whole folder. It is also the layout that BigQuery external tables, Dataproc, and Spark expect, so the partitions are discovered without extra configuration.
Alongside the folder, Renta keeps a zero-byte object named exactly like it. The object marks the folder and holds no data.
Sync strategy
How Renta refreshes the folder depends on the source and on the pipeline settings.
| Strategy | When Renta uses it | Description |
|---|---|---|
| Full reload | Report types without a date column, and any pipeline with an unpartitioned folder | Renta deletes every object under the folder prefix and uploads the full extract again, so the folder matches the source at the moment of the run. |
| Incremental | Report types with a date column and a date-partitioned folder | Renta deletes the objects of the overwrite window by their date prefix and uploads those days again. Days older than the window stay as they were. |
Google Cloud Storage has no incremental merge mode. Sources that upsert changed records into a warehouse table fall back to full reload here, because an object store has no row to update.
A run that changes the field list is a special case. The folder is deleted and rebuilt from scratch, and the whole period set in Date Range is loaded again.
Troubleshooting
Most problems surface on the connection page, before any pipeline runs.
| Message | Cause | What to do |
|---|---|---|
| This file is not a Google service account key | The uploaded JSON lacks the fields of a key downloaded from Google Cloud, such as client_email or private_key. | Download the key again from IAM & Admin > Service Accounts > Keys and upload that file. OAuth client files and application default credentials are not accepted. |
| Google rejected the service account key | Google did not issue a token for the key. The key was deleted or disabled, or the service account no longer exists. | Create a new key for the service account and upload it. If the account was deleted, create a new one with the roles from Requirements. |
| The service account cannot write into bucket | The key is valid, but the marker folder could not be created or deleted in the bucket. | Grant Storage Object Admin on the bucket to the service account email shown on the connection card, then click Save again. |
| No accessible buckets are available for the specified project | The service account cannot list the buckets of the project. | Grant the Viewer role on the project, or check that you selected the project the bucket belongs to. |
A response Renta does not recognize never reaches the run log as is. It shows up as An error has occurred. Please contact the technical support team., which carries no Google detail. Contact Renta support if you see that wording.
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.