Get hands-on experience with 20+ free Google Cloud products and $300 in free credit for new customers.

How is network bandwidth cost calculated for Google Cloud Storage?

I have noticed that my monthly GCS billing is quite high and the top 2 items are "Network Data Transfer GCP Multi-region within Northern America" and "Download Worldwide Destinations (excluding Asia & Australia)", which seems to be network bandwidth related.

My bucket is mostly accessed by Cloud Run/VMs on Google Cloud (from the same and different projects) so I can kind of understand the cost for "Network Data Transfer GCP Multi-region within Northern America".

I do have 1 NodeJS Express Cloud Run which basically does some authentication and then send files from the GCS bucket to the outside world like below:

 

import express, { Express, Request, Response } from 'express'
import { Storage } from '@google-cloud/storage'

const app: Express = express()
app.get('/uploads/*', async (req: Request, res: Response) => {
  pipeline(storage.bucket(...).file(...).createReadStream(), res)
}

 

Can this be the cause for my high "Download Worldwide Destinations (excluding Asia & Australia)" cost? Am I paying double for the bandwidth (from GCS to the Cloud Run service and then to the outside world). I have tried checking GCS logs and it looks like the bucket is only directly accessed by my services on Google Cloud so I'm not sure what would cause the "Download Worldwide" thing.

If it is indeed caused by the Cloud Run service above, why is it counted under GCS and not under Cloud Run in my billing report?

0 1 1,833
1 REPLY 1

Hi @bubiche 

It seems that the high cost under "Download Worldwide Destinations (excluding Asia & Australia)" is likely due to your Cloud Run service. 

  • Data Transfer Costs:
    • GCS to Cloud Run: If Cloud Run is accessing data from Google Cloud Storage (GCS) within the same region, the transfer is usually free. But if they’re in different regions, you may incur additional costs.
    • Cloud Run to the Outside World: When Cloud Run sends data to users outside Google Cloud, that’s considered "egress" and gets charged separately as "Download Worldwide Destinations." Pricing depends on the bucket's location and the destination, with rates outlined in the provided matrix (e.g., transferring from Northern America to Europe costs $0.02/GB, and to Africa costs $0.11/GB).
    • General Network Usage: General network usage covers any data read from your Cloud Storage bucket that doesn’t fall under the specific categories. For example, it applies when data is transferred from your Cloud Storage bucket to the internet.
  • Why the GCS Charge?: Even though Cloud Run is serving the files, the data is being retrieved from GCS, so the egress costs show up under GCS, not Cloud Run, in your billing.

If you have any doubts or need further assistance, I recommend reaching out to Cloud Billing support so that the Google Cloud billing team can guide you further in addressing your billing issues.

Hope this helps.