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?