> For the complete documentation index, see [llms.txt](https://docs.codemash.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.codemash.io/cloud/files/integrations/providers/google-cloud.md).

# Google Cloud Storage

Connect a Google Cloud Storage bucket as a Files integration.

> Store your project's files in a Google Cloud Storage bucket you own.

*Last updated 2026-09-11 · Applies to all projects*

**Where:** Files → Integrations → **Add New Integration** → Google Cloud Storage · `/projects/<project>/files/integrations/new/google-cloud`

## Why it exists

Teams already on Google Cloud should not have to move their files elsewhere. This integration writes to a bucket in your own project, authenticated by a service account, so the data stays under your IAM rules and your billing account.

## When you'd use it

* Your workloads run on Google Cloud and files belong in the same project.
* You want a bucket with your own location, storage class, and retention policy.
* A service account is how your organisation prefers machine access to be granted.

## Where to find it

Files → **Integrations** → **Add New Integration** → **Google Cloud Storage**.

<figure><img src="https://760328771-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LwSkuCpTNI_AerL8J2a%2Fuploads%2Fgit-blob-c934668b2e68d13b963f06ac8f66615cc8ee1404%2Ffiles-new-google-cloud.png?alt=media" alt="The New Google Cloud Storage Integration form"><figcaption><p>Files → Integrations → Add New Integration → Google Cloud Storage.</p></figcaption></figure>

## Walkthrough video

{% hint style="warning" %}
Video **required, not recorded yet.** The documentation standard asks for one whenever setup leaves the Norbix screen, and most of this one happens in the Google Cloud console: bucket, service account, role grant, JSON key. A screen recording of a real Google Cloud account is needed; the Playwright suite cannot produce it.
{% endhint %}

## How to set it up

You need `files:create` on `files:integration:all` in Norbix, and rights in Google Cloud to create a service account and grant it a role on the bucket.

1. In the Google Cloud console, create (or pick) a **bucket**.
2. Create a **service account** in the same project.
3. Grant that service account access to the bucket — **Storage Object Admin** is the usual role, because Norbix must read, write, and delete objects.
4. Create a **JSON key** for the service account and download it.
5. In Norbix, go to **Files → Integrations → Add New Integration → Google Cloud Storage**.
6. **Bucket Name** — the bucket from step 1, for example `my-project-files`.
7. **Service Account JSON Key** — paste the whole contents of the downloaded file, starting with `{` and ending with `}`. Paste the file's text, not its path.
8. Give the integration a **name** you will recognise, such as `Production files`.
9. Press **Test**, then **Save**.

**What "working" looks like:** **Test** reports success, the integration shows as **Enabled**, and the [Browser](/cloud/files/browser.md) can list the bucket.

## Good to know

* **Paste the key's contents, not the file path.** The field expects the JSON document itself.
* **"Storage Object Admin" is not the same as "Storage Admin".** Object Admin is enough and is the narrower grant — prefer it.
* **The JSON key is the secret.** Re-opening the form shows the bucket name filled in and the key field empty. Leave it empty to keep the stored key.
* **Keys do not expire, so rotate them yourself.** Create a new key, paste it here, then delete the old key in Google Cloud.
* The bucket must already exist; Norbix does not create it.
* Deleting the integration does not delete the bucket or its contents.

## Do it in code

{% tabs %}
{% tab title="JavaScript / TypeScript" %}

```ts
import { Norbix } from '@norbix.ai/ts';
const norbix = new Norbix();

await norbix.hub.files.saveFilesIntegration({
  name: 'Production files',
  provider: 'GoogleCloudStorage',
  integration: {
    bucketName: 'my-project-files',
    serviceAccountJsonKey: '<paste the JSON key here>',
  },
});
```

{% endtab %}

{% tab title=".NET" %}

```csharp
using Norbix.Sdk;

using var client = new NorbixClient();

await client.Files.SaveFilesIntegrationAsync(new SaveFilesIntegrationRequest
{
    Name = "Production files",
    Provider = "GoogleCloudStorage",
    // provider-specific body: bucketName, serviceAccountJsonKey
});
```

{% endtab %}

{% tab title="Python" %}

```python
from norbix_python import NorbixHub

norbix = NorbixHub()

norbix.files.save_files_integration(
    name="Production files",
    provider="GoogleCloudStorage",
    integration={
        "bucketName": "my-project-files",
        "serviceAccountJsonKey": "<paste the JSON key here>",
    },
)
```

{% endtab %}

{% tab title="Go" %}

```go
c, _ := norbix.New(norbix.Options{})
ctx := context.Background()

var result map[string]any
_ = c.Hub.Files.SaveFilesIntegration(ctx, map[string]any{
	"name":     "Production files",
	"provider": "GoogleCloudStorage",
	"integration": map[string]any{
		"bucketName": "my-project-files",
	},
}, &result)
```

{% endtab %}
{% endtabs %}

**CLI:** the Norbix CLI covers files themselves (`norbix files list`, `info`, `download`, `upload`, `sign`, `delete`) but has no command for the module or its integrations. Use an SDK or the API for those.

Method page: [Save Files Integration](/sdks-and-cli/files/integrations/save-files-integration.md)

## API reference

Endpoints: [Save Files Integration](/api-reference/files/integrations/save-files-integration.md) · [Files → Integrations](/api-reference/files/integrations.md).

## Related

[Providers](/cloud/files/integrations/providers.md) · [Google Drive](/cloud/files/integrations/providers/google-drive.md) · [AWS S3](/cloud/files/integrations/providers/aws-s3.md) · [Integrations](/cloud/files/integrations.md)
