{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Google Cloud Storage Sink Configuration Guide","siteUrl":"https://docs.synqly.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"google-cloud-storage-sink-configuration-guide","__idx":0},"children":["Google Cloud Storage Sink Configuration Guide"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide walks you through creating a service account, assigning least-privilege permissions, and gathering the information required to configure Google Cloud Storage (GCS) as a Sink provider with Synqly's Sink connector. Events are written to your GCS bucket as compressed JSON files."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":1},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you begin, ensure you have:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Google Cloud project with billing enabled"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Access to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://console.cloud.google.com"},"children":["Google Cloud Console"]}," with permission to create service accounts and manage IAM"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An existing GCS bucket, or permission to create one"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"required-permissions","__idx":2},"children":["Required Permissions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Synqly Sink connector writes event files to your GCS bucket. The minimum IAM permissions required on the target bucket are:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Permission"},"children":["Permission"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["storage.objects.create"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Write event files to the bucket"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["storage.objects.delete"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Overwrite existing files (required by GCS for object creation)"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The built-in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Storage Object User"]}," role (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["roles/storage.objectUser"]},") covers these permissions and is the recommended choice. If you prefer true least-privilege, you can create a custom role with only the permissions listed above."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Scope the service account's role to the specific bucket used for this integration. See step 2 below for instructions on adding an IAM condition."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1-create-a-gcs-bucket","__idx":3},"children":["1. Create a GCS Bucket"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you already have a bucket, skip to step 2 and note the bucket name."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the Google Cloud Console, navigate to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Cloud Storage > Buckets"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enter a globally unique name for the bucket and select a location."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Configure the remaining settings to match your organization's requirements and click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Note the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["bucket name"]}," — you will need it when configuring the integration."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more details, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://cloud.google.com/storage/docs/creating-buckets"},"children":["Creating storage buckets"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2-create-a-service-account","__idx":4},"children":["2. Create a Service Account"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the Google Cloud Console, navigate to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["IAM & Admin > Service Accounts"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create Service Account"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enter a name (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["synqly-sink"]},") and an optional description. Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create and Continue"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Grant this service account access to project"]},", click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Select a role"]}," and choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Cloud Storage > Storage Object User"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Add IAM Condition"]}," to scope the role to your target bucket. In the condition builder, set:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Condition type"]},": Resource — Name"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operator"]},": Starts with"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Value"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["projects/_/buckets/<your-bucket-name>"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This ensures the service account can only write to the specified bucket."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save"]}," on the condition, then click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Continue"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Done"]}," to create the service account."]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you prefer a custom role instead of the built-in Storage Object User role, navigate to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["IAM & Admin > Roles"]},", click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create Role"]},", and add only the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["storage.objects.create"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["storage.objects.delete"]}," permissions. Then assign that custom role to the service account in step 4 above."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3-create-a-service-account-key","__idx":5},"children":["3. Create a Service Account Key"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Service Accounts"]}," list, click the service account you created in step 2."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Go to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Keys"]}," tab and click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Add Key > Create new key"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["JSON"]}," as the key type and click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A JSON key file will download to your machine. Store it securely — this file contains the credentials Synqly will use to authenticate."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The JSON key file is shown only once at download time. If you lose it, you will need to create a new key. Treat this file as a secret and do not commit it to version control."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You will paste the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["entire contents"]}," of this JSON key file as the credential secret when configuring the integration."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"configure-the-integration","__idx":6},"children":["Configure the Integration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create your integration by supplying all configuration values."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Integration Parameter"},"children":["Integration Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Credential"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paste the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["full contents"]}," of the service account JSON key file downloaded in step 3. This is the entire JSON object, not an individual field from it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Bucket"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The name of the GCS bucket created in step 1."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Path"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A prefix path for event files inside the bucket."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Path"]}," field controls where event files land inside your bucket. Events are written to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{path}/{location}/{YYYY/MM/DD}/{timestamp}.json.gz"]},". For example, if you set the path to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["events/sink"]},", files will be written to paths like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["events/sink/my-location/2026/04/28/2026-04-28T12:00:00.000000000Z.json.gz"]},". Choose a path that makes it easy to organize and query your event data."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"additional-resources","__idx":7},"children":["Additional Resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://cloud.google.com/storage/docs/creating-buckets"},"children":["Creating storage buckets"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://cloud.google.com/iam/docs/service-accounts-create#creating"},"children":["Creating service accounts"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://cloud.google.com/iam/docs/keys-create-delete#iam-service-account-keys-create-console"},"children":["Creating service account keys"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://cloud.google.com/storage/docs/access-control/iam-roles"},"children":["Cloud Storage IAM roles"]}]}]}]},"headings":[{"value":"Google Cloud Storage Sink Configuration Guide","id":"google-cloud-storage-sink-configuration-guide","depth":1},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Required Permissions","id":"required-permissions","depth":2},{"value":"1. Create a GCS Bucket","id":"1-create-a-gcs-bucket","depth":2},{"value":"2. Create a Service Account","id":"2-create-a-service-account","depth":2},{"value":"3. Create a Service Account Key","id":"3-create-a-service-account-key","depth":2},{"value":"Configure the Integration","id":"configure-the-integration","depth":2},{"value":"Additional Resources","id":"additional-resources","depth":2}],"frontmatter":{"slug":"guides/provider-configuration/gcs-sink-setup","seo":{"title":"Google Cloud Storage Sink Configuration Guide"}},"lastModified":"2026-07-21T13:46:18.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/provider-configuration/gcs-sink-setup","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}