intermediate

Cloud Storage

Объекты в bucketах: lifecycle, signed URL, IAM, retention policy и раздача статики.

Cloud Storage хранит объекты в bucket'ах: upload пользователей, статика, бэкапы и артефакты сборки. В JavaScript-приложении signed URL или resumable upload выводят тяжёлые blob'ы из памяти API, а IAM и uniform bucket-level access задают least privilege.

					import { Storage } from '@google-cloud/storage';

const storage = new Storage();
const bucket = storage.bucket('app-uploads-prod');

const [url] = await bucket.file(objectKey).getSignedUrl({
  version: 'v4',
  action: 'write',
  expires: Date.now() + 15 * 60 * 1000,
  contentType: 'image/jpeg',
});
				

| Класс хранения | Когда | |----------------|-------| | Standard | Горячие файлы и частое чтение | | Nearline/Coldline/Archive | Бэкапы с lifecycle | | Versioning | Откат после случайной перезаписи |

С bucket'ами сочетайте lifecycle, CORS для браузерного upload и CDN перед публичной статикой.

На интервью: signed URL vs прокси-upload; риски публичного bucket; классы хранения и egress; immutability и eventual consistency listing.

Типовые ошибки: bucket «на весь мир» для приватных файлов; ключ service account в браузере для signed URL; нет lifecycle на логах и бэкапах.

Компромисс — дешёвое durable-хранилище против latency, семантики consistency и аккуратной модели доступа.

Чеклист:

  • Ключи service account не на frontend.
  • Signed URL или authenticated upload для пользовательского контента.
  • Lifecycle для негорячих данных.
  • Отдельные bucket'ы по окружению и чувствительности.