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'ы по окружению и чувствительности.