> For the complete documentation index, see [llms.txt](https://docs.omics.ai/products/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.omics.ai/products/publisher/data-sources/connectors/connecting-to-google-cloud-platform.md).

# Connecting to Google Cloud Storage

Connect [Publisher](https://github.com/DNAstack/dnastack-product-docs/tree/main/docs/publisher/data-sources/connectors/broken-reference/README.md) to [Google Cloud Storage (GCS)](https://cloud.google.com/storage/docs) to access and share your data. This connection requires Google Cloud credentials and specific project information.

## Prerequisites

Before starting, gather these items:

* [Google service account](https://cloud.google.com/iam/docs/keys-create-delete) with appropriate permissions
* Service account key in JSON format
* Name of your GCS bucket

## Configuration Process

### Initial Setup

From the Publisher interface, select "Data Sources" in the navigation bar and click "Connect Data Source". Choose "Google Cloud Storage Object Store" from the available connectors.

### Service Account Setup

1. Access your [Google Cloud Platform Console](https://console.cloud.google.com/apis/credentials):
   * Create a new service account or use an existing one
   * Navigate to the KEYS tab
   * Create a new key in JSON format
2. In Publisher, upload your JSON Service Account key

{% hint style="info" %}
For detailed instructions on creating [Google service account keys](broken://spaces/v9ojhytrSLokyKPCzfbq), refer to Google Cloud documentation.
{% endhint %}

## Storage Configuration

Select your storage bucket from the available options.

### Recommended Bucket Settings

When provisioning a GCS bucket to connect to Publisher, the following settings are strongly recommended for security:

* **Public access prevention** — set to `enforced`. Publisher data buckets should never be publicly reachable; access is always mediated by the connector's service account.
* **Uniform bucket-level access** — enable it. Publisher grants access through IAM, so per-object ACLs are unnecessary and make access harder to audit.
* **Encryption** — use Google-managed (default) encryption. Publisher does **not** support customer-managed encryption keys (CMEK); buckets encrypted with CMEK cannot be connected.

The following Terraform reflects these recommendations:

```hcl
resource "google_storage_bucket" "publisher_data" {
  name     = "${var.project}-publisher-data"
  project  = var.project
  location = var.google_region

  public_access_prevention    = "enforced"
  uniform_bucket_level_access = true
  # Encryption is left unset so the bucket uses Google-managed keys.
  # Do not configure a CMEK key — Publisher does not support CMEK-encrypted buckets.
}
```

### Data Update Settings

Choose how Publisher monitors your GCS bucket:

### **Google PubSub Option:**

* Enable Google PubSub integration
* Provide:
  * PubSub topic ID
  * PubSub project ID
  * Service account key for PubSub (JSON format)

### **Schedule Option:**

* Select an update interval (30 seconds to monthly)
* Updates can be configured later if needed

### Finalizing Setup

1. Provide a descriptive name for your data source
2. Optionally create and share a collection from this data source


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.omics.ai/products/publisher/data-sources/connectors/connecting-to-google-cloud-platform.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
